一老翘、高可用及讀寫分離
1.主從復制架構演變介紹
1.1 基本機構
(1)一主一從
(2)一主多從
(3)多級主從
(4)雙主
(5)循環(huán)復制
1.2 高級應用架構演變
1.2.1 高性能架構
讀寫分離架構(讀性能較高)
代碼級別
MySQL proxy(Atlas,mysqll router,proxySQL(percona),makscale)疆瑰、
amoeba(taobao)
xx-dbproxy等。
分布式架構(讀寫性能都提高):
分庫分表-cobak--->TDDL(頭都大了),DRDS
Mycat--->DBLE自主研發(fā)等扎筒。
NewSQL-->TiDB
1.2.2 高可用架構
(3)單活:MMM架構——mysql-mmm(google)
(4)單活:MHA架構——mysql-master-ha(日本DeNa),T-MHA
(5)多活:MGR ——5.7 新特性 MySQL Group replication(5.7.17) --->Innodb Cluster
(6)多活:MariaDB Galera Cluster架構,(PXC)Percona XtraDB Cluster让蕾、MySQL Cluster(Oracle rac)架構
2. 高可用MHA *****
2.1 架構工作原理
主庫宕機處理過程
1. 監(jiān)控節(jié)點 (通過配置文件獲取所有節(jié)點信息)
系統(tǒng),網(wǎng)絡,SSH連接性
主從狀態(tài),重點是主庫
2. 選主
(1) 如果判斷從庫(position或者GTID),數(shù)據(jù)有差異,最接近于Master的slave,成為備選主
(2) 如果判斷從庫(position或者GTID),數(shù)據(jù)一致,按照配置文件順序,選主.
(3) 如果設定有權重(candidate_master=1),按照權重強制指定備選主.
1. 默認情況下如果一個slave落后master 100M的relay logs的話执解,即使有權重,也會失效.
2. 如果check_repl_delay=0的化,即使落后很多日志,也強制選擇其為備選主
3. 數(shù)據(jù)補償
(1) 當SSH能連接,從庫對比主庫GTID 或者position號,立即將二進制日志保存至各個從節(jié)點并且應用(save_binary_logs )
(2) 當SSH不能連接, 對比從庫之間的relaylog的差異(apply_diff_relay_logs)
4. Failover
將備選主進行身份切換,對外提供服務
其余從庫和新主庫確認新的主從關系
- 應用透明(VIP)
- 故障切換通知(send_reprt)
- 二次數(shù)據(jù)補償(binlog_server)
- 自愈自治(待開發(fā)...)
===========Failover===========
1. MHA通過腳本(masterha_master_monitor)實時(ping_interval=2)監(jiān)控主庫的狀態(tài)(主機,數(shù)據(jù)庫狀態(tài))
2. 監(jiān)控到主庫宕機之后,會發(fā)生自動選主(masterha_master_switch )
(1) 權重: 參數(shù)
(2) 日志量
(3) 配置文件的順序
3. 數(shù)據(jù)補償
(1) 當主庫SSH能夠連接,各個從庫會立即保存(save_binary_logs)缺失部分的日志到/var/tmp,進行數(shù)據(jù)補償.
(2) 當主庫SSH無法連接,通過腳本(apply_diff_relay_logs)自動進行從庫的relaylog的差異處理,進行數(shù)據(jù)補償.
4. 構建新的主從關系,并將故障節(jié)點移除(配置文件移除)
5. MHA主進程完成工作后,自動退出.
6. 應用透明 VIP(master_ip_failover_script=/usr/local/bin/master_ip_failover)
7. 故障通知 (report_script=/usr/local/bin/send)
8. 提供額外數(shù)據(jù)補償?shù)氖侄?binlog server)
9. 自動自愈,待開發(fā)....
==================================
2.2 架構介紹:
1主2從帝洪,master:db01 slave:db02 db03 ):
MHA 高可用方案軟件構成
Manager軟件:選擇一個從節(jié)點安裝
Node軟件:所有節(jié)點都要安裝
2.3 MHA軟件構成
Manager工具包主要包括以下幾個工具:
masterha_manger 啟動MHA
masterha_check_ssh 檢查MHA的SSH配置狀況
masterha_check_repl 檢查MySQL復制狀況
masterha_master_monitor 檢測master是否宕機
masterha_check_status 檢測當前MHA運行狀態(tài)
masterha_master_switch 控制故障轉(zhuǎn)移(自動或者手動)
masterha_conf_host 添加或刪除配置的server信息
Node工具包主要包括以下幾個工具:
這些工具通常由MHA Manager的腳本觸發(fā)款青,無需人為操作
save_binary_logs 保存和復制master的二進制日志
apply_diff_relay_logs 識別差異的中繼日志事件并將其差異的事件應用于其他的
purge_relay_logs 清除中繼日志(不會阻塞SQL線程)