MySQL Replication 概述
集群的主要類型?
高可用集群(High Available Cluster, HA)
高可用集群是指通過特殊的軟件把獨立的服務器連接起來,組成一個能夠提供故障切換(Fail Over)功能的集群
如何衡量高可用?
99.53% 7天 常規系統 99.98% 8小時 可用系統 99.99% 52.6分鍾 高可用系統 99.999% 5.3分鍾 抗故障系統 99.9999% 32秒 容錯系統
MySQL常用的集群架構
MySQL Replication
MySQL Cluster
MySQL Group Replication (MGR) 5.7.17
MariaDB Galera Cluster
Keepalived|HeartBeat||Lvs,Haproxy等技術構建高可用集群
什么是 MySQL Replication?
1、Replication可以實現將數據從一台數據庫服務器(master)復制到一台到多台數據庫服務器上(slave)
2、默認情況下,屬於異步復制,所以無需維持長連接
復制拓撲:
MySQL Replication的原理
簡單來說,master將數據庫的改變寫入二進制日志,slave同步這些二進制日志,並根據二進制日志進行數據重演操作,實現數據異步同步
1. 在主庫上把數據更改(DDL DML DCL)記錄到二進制日志(Binary Log)中。
2. 備庫I/O線程將主庫上的日志復制到自己的中繼日志(Relay Log)中。
3. 備庫SQL線程讀取中繼日志中的事件,將其重放到備庫數據庫之上。
MySQL Replication的架構
master —> slave (雙機熱備)
默認情況下,master接收讀寫請求,slave只接收讀請求以減輕master的壓力
復制的過程:
1、slave端的IO線程連上master端,請求
2、master端返回給slave端,bin log文件名和位置信息
3、IO線程把master端的bin log 內容依次寫到slave端relay bin log(中繼日志)里,並把master端的bin-log文件名和位置記錄到master.info里
4、slave端的sql線程,檢測到relay bin log中內容更新,就會解析relay log 里更新的內容,並執行這些操作
M--S 雙機熱備實驗 > 點我
master —> slave1 —> slave2 (級聯架構)
優點:進一步分擔讀寫力
缺點:slave1 出現故障,后面的所有級聯slave服務器都會同步失敗
M--S--S 級聯架構實驗 > 點我
master —> (slave1 slave2) (並聯架構)
/----> slave1
master (並聯架構)
\----> slave2
優點:解決上面的slave1的單點故障,同時也分擔讀壓力
缺點:間接增加master的壓力(傳輸二進制日志壓力)
master1 <------> master2 (互為主從)
優點:從命名來看,兩台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中繼日志