mysql复制架构迁移到pxc_2020-03-18 Mysql常见的HA中间层架构mmm,pxc,mha
1、MMM結(jié)構(gòu)(雙主復制的結(jié)構(gòu))
Master-Master Replication Manager for MySQL 是一套腳本集合,用以監(jiān)控、管理雙主復制架構(gòu),通過設置一個可寫的VIP和多個只讀的VIP,完成故障自動轉(zhuǎn)移、讀負載分攤等功能;雙主互為主從
MMM
存在問題:
通過vip實現(xiàn)漂移,不能跨網(wǎng)段,更不能跨機房
網(wǎng)絡分區(qū),導致數(shù)據(jù)庫雙寫,數(shù)據(jù)沖突,需要業(yè)務修改數(shù)據(jù)或者重做
DBA部署和運維不方便,容易出問題(綁定vip,配置文件等)
使用binlog進行同步會有延時,如果寫節(jié)點寫操作過程中掛了,集群中其他節(jié)點無法訪問掛掉的 寫節(jié)點的binlog,就 無法同步這部分數(shù)據(jù),導致數(shù)據(jù)丟失。
MMM的版本已不更新,談不上對mysql新特性的支持
不適合于對數(shù)據(jù)一致性要求很高的場景。(異步復制,數(shù)據(jù)雙寫沖突)
VIP地址漂移原理?
1、MMM本身的monitor和agent提供了動態(tài)變更網(wǎng)卡IP綁定的功能(網(wǎng)卡可以綁定多個IP的呢)
2、借用keepalived的虛擬路由冗余協(xié)議,實現(xiàn)這種高可用的VIP機制(ARP表原理), 所以又有MM+Keepalived組合
明白了VIP地址漂移的道理,那么不能跨網(wǎng)段就顯而易見了(多網(wǎng)段VIP沒辦法路由呢)。
2、PXC結(jié)構(gòu)
Percona XtraDB Cluster是一個為MySQL用戶提供高可用性和伸縮性的解決方案,采用ZK作為中央控制模塊。
GTID:Global Transaction ID? ??全局事務唯一id
PXC
1、同步復制,事務要么在所有節(jié)點提交或不提交,一致性高。(一半以上結(jié)點OK則事務成功,高可用)
2、多主復制,可以在任意節(jié)點進行寫操作,當然也可以讀。
一致性最高,但是QPS相對受限。
2、mha結(jié)構(gòu)
MHA(Master High Availability)是一套優(yōu)秀的作為MySQL高可用性環(huán)境下故障切換和主從提升的高可用軟件。在MySQL故障切換過程中,MHA能做到在0~30秒之內(nèi)自動完成數(shù)據(jù)庫的故障切換操作,并且在進行故障切換的過程中,MHA能在最大程度上保證數(shù)據(jù)的一致性,以達到真正意義上的高可用。
組成部分:
1.MHA manager,管理節(jié)點
2.MHA node,數(shù)據(jù)節(jié)點
部署架構(gòu):
MHA manager可以單獨部署在一臺機器上,管理多個master-slave集群,也可以單獨部署在一個slave節(jié)點上。MHA manager探測集群的node節(jié)點,當發(fā)現(xiàn)master故障時,會選取擁有最新數(shù)據(jù)的slave提升為新的master,然后將其他的slave導向新的master節(jié)點,并完成數(shù)據(jù)的同步,整個故障轉(zhuǎn)移過程對于客戶端應用程序來說是完全透明的。
MHA
原理介紹:
MHA的目的在于維持MySQL Replication中Master庫的高可用性,其最大特點是可以修復多個Slave之間的差異日志,最終使所有Slave保持數(shù)據(jù)一致,然后從中選擇一個充當新的Master,并將其它Slave指向它。
當master出現(xiàn)故障時,可以通過對比slave之間I/O thread 讀取主庫binlog的position號,選取最接近的slave做為備選主庫(備胎)。其它的從庫可以通過與備選主庫對比生成差異的中繼日志。在備選主庫上應用從原來master保存的binlog,同時將備選主庫提升為master。最后在其它slave上應用相應的差異中繼日志并開始從新的master開始復制。
過程:
(1)從宕機崩潰的master保存二進制日志事件(binlog events);
(2)識別含有最新更新的slave,作為備選主庫;
(3)對比備選主庫和其他slave,生成差異的中繼日志(relay log);
(4)應用從master保存的二進制日志事件(binlog events)到備選主庫;
(5)提升提升備選主庫為新的master主庫;
(6)在其他slave上應用差異中繼日志(relay log);
(6)使其他的slave連接新的master進行復制;
優(yōu)點:
1. 故障切換時,可以自行判斷哪個從庫與主庫的數(shù)據(jù)最接近,就切換到上面,可以減少數(shù)據(jù)的丟失,保證數(shù)據(jù)的一致性
2. 支持 binlog server,可提高 binlog 傳送效率,進一步減少數(shù)據(jù)丟失風險。
3. 可以配置 mysql 5.7 的增強半同步,來保證數(shù)據(jù)的時時同步
在MHA自動故障切換過程中,MHA試圖從宕機的主服務器上保存二進制日志,最大程度的保證數(shù)據(jù)的不丟失,但這并不總是可行的。例如,如果主服務器硬件故障或無法通過ssh訪問,MHA沒法保存二進制日志,只進行故障轉(zhuǎn)移而丟失了最新的數(shù)據(jù)。使用MySQL 5.5的半同步復制,可以大大降低數(shù)據(jù)丟失的風險。MHA可以與半同步復制結(jié)合起來。如果只有一個slave已經(jīng)收到了最新的二進制日志,MHA可以將最新的二進制日志應用于其他所有的slave服務器上,因此可以保證所有節(jié)點的數(shù)據(jù)一致性。
Manager若自身需要是高可用的,且保證對各個機房的可達性。
另外,可自定義開發(fā)哨兵Sentinel集群替代Manager。
總結(jié)
以上是生活随笔為你收集整理的mysql复制架构迁移到pxc_2020-03-18 Mysql常见的HA中间层架构mmm,pxc,mha的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 秘密的英文
- 下一篇: 爱因斯坦的名言名句262个