MySQL組復制系列文章:
1.MySQL高可用的背景
數據庫的主從復制是一個很實用的功能,但如何保證它的高可用卻是一件難事。實現MySQL主從復制高可用的工具,常見的有:
- (1).MMM:淘汰了,在一致性和高並發穩定性等方面有些問題。
- (2).MHA:有些人還在用,但也有些問題,也是趨於淘汰的MySQL主從高可用方案。
- (3).Galera:引領時代的主從復制高可用技術。
- (4).MariaDB Galera Cluster:MariaDB對Galera的實現。
- (5).PXC:Percona XtraDB Cluster,是Percona對Galera的自我實現,用的人似乎很多。
- (6).GR:Group Replication,MySQL官方提供的組復制技術(MySQL 5.7.17引入的技術),基於Paxos算法。
- MariaDB Galera Cluster、PXC、GR是類似的,都各有優點。但GR是革命性的,基於原生復制技術,據傳很多方面都優於PXC。
但是,上面每個高可用實現方法,都有這樣那樣的缺點,甚至mmm還是通過perl腳本來自動化模擬高可用環境的。到了Galera,這是一個引領潮流的高可用技術,它主要針對具有事務特性的Innodb存儲引擎,Percona和MariaDB都分別實現了自己的Galera技術:MariaDB Galera Cluster和Percona XtraDB Cluster。MySQL沒有推出自己的Galera,但卻在2016年的MySQL 5.7.17版本中推出了Group Replication,即組復制技術。
網上對組復制和Galera的對比很多,特別是2016年組復制出生后大火的"Galera將死"的言論,但實際上,仍然有很多人在用着pxc,畢竟它已經揚帆航行多年,而GR才出沒多久,前幾個版本也一直在修修補補。那么,GR or Galera, that's a question
。
廢話說了一大堆,還是進入正文吧:MySQL組復制技術的簡介。
2.什么是MGR?
MGR(MySQL Group Replication)是MySQL官方在MySQL 5.7.17版本中以插件形式推出的主從復制高可用技術,它基於原生的主從復制,將各節點歸入到一個組中,通過組內節點的通信協商(組通信協議基於Paxos算法),實現數據的強一致性、故障探測、沖突檢測、節點加組、節點離組等等功能。
例如,具有3個節點的組:
這3個節點互相通信,每當有事件發生,都會向其他節點傳播該事件,然后協商,如果大多數節點都同意這次的事件,那么該事件將通過,否則該事件將失敗或回滾。
這些節點可以是單主模型的(single-primary),也可以是多主模型的(multi-primary)。單主模型只有一個主節點可以接受寫操作,主節點故障時可以自動選舉主節點。多主模型下,所有節點都可以接受寫操作,所以沒有master-slave的概念。
就這樣,完了。