高可用集羣(High Available Cluster, HA)html
高可用集羣是指經過特殊的軟件把獨立的服務器鏈接起來,組成一個可以提供故障切換(Fail Over)功能的集羣sql
99.53% 7天 常規系統 99.98% 8小時 可用系統 99.99% 52.6分鐘 高可用系統 99.999% 5.3分鐘 抗故障系統 99.9999% 32秒 容錯系統
MySQL Replication數據庫
MySQL Cluster服務器
MySQL Group Replication (MGR) 5.7.17架構
MariaDB Galera Cluster異步
Keepalived|HeartBeat||Lvs,Haproxy等技術構建高可用集羣spa
一、Replication能夠實現將數據從一臺數據庫服務器(master)複製到一臺到多臺數據庫服務器上(slave)線程
二、默認狀況下,屬於異步複製,因此無需維持長鏈接日誌
複製拓撲:code
簡單來講,master將數據庫的改變寫入二進制日誌,slave同步這些二進制日誌,並根據二進制日誌進行數據重演操做,實現數據異步同步
1. 在主庫上把數據更改(DDL DML DCL)記錄到二進制日誌(Binary Log)中。
2. 備庫I/O線程將主庫上的日誌複製到本身的中繼日誌(Relay Log)中。
3. 備庫SQL線程讀取中繼日誌中的事件,將其重放到備庫數據庫之上。
默認狀況下,master接收讀寫請求,slave只接收讀請求以減輕master的壓力
一、slave端的IO線程連上master端,請求
二、master端返回給slave端,bin log文件名和位置信息
三、IO線程把master端的bin log 內容依次寫到slave端relay bin log(中繼日誌)裏,並把master端的bin-log文件名和位置記錄到master.info裏
四、slave端的sql線程,檢測到relay bin log中內容更新,就會解析relay log 裏更新的內容,並執行這些操做
M--S 雙機熱備實驗 > 點我
優勢:進一步分擔讀寫力
缺點:slave1 出現故障,後面的全部級聯slave服務器都會同步失敗
M--S--S 級聯架構實驗 > 點我
/----> slave1
master (並聯架構)
\----> slave2
優勢:解決上面的slave1的單點故障,同時也分擔讀壓力
缺點:間接增長master的壓力(傳輸二進制日誌壓力)
優勢:從命名來看,兩臺master好像都能接受讀、寫請求,但實際上,每每運做的過程當中,同一時刻只有其中一臺master會接受寫請求,另一臺接受讀請求
示例: create table aaa; m: s: bin-log --------> io(relay-bin-log) sql create table aaa;
把主上的二進制日誌(bin-log)的內容傳到從上的一個新的日誌叫relay-bin-log
從上的 IO 線程 負責傳輸
從上的 SQL 線程 負責從服務器解析日誌
如果雙master架構,則兩邊都得開啓binlog和relarylog中繼日誌