1岩遗、MMM結(jié)構(雙主復制的結(jié)構)
Master-Master Replication Manager for MySQL 是一套腳本集合诫给,用以監(jiān)控、管理雙主復制架構香浩,通過設置一個可寫的VIP和多個只讀的VIP雷滋,完成故障自動轉(zhuǎn)移不撑、讀負載分攤等功能;雙主互為主從
存在問題:
通過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沒辦法路由呢)工三。
官方網(wǎng)站:http://mysql-mmm.org
2顽素、PXC結(jié)構
Percona XtraDB Cluster是一個為MySQL用戶提供高可用性和伸縮性的解決方案咽弦,采用ZK作為中央控制模塊。
GTID:Global Transaction ID? ??全局事務唯一id
1胁出、同步復制,事務要么在所有節(jié)點提交或不提交段审,一致性高全蝶。(一半以上結(jié)點OK則事務成功,高可用)
2寺枉、多主復制抑淫,可以在任意節(jié)點進行寫操作,當然也可以讀姥闪。
一致性最高始苇,但是QPS相對受限。
官網(wǎng):https://www.percona.com/doc/percona-xtradb-cluster/LATEST/index.html
2筐喳、mha結(jié)構
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é)點
部署架構:
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的目的在于維持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郊闯。