MySQL組複製系列文章:html
數據庫的主從複製是一個很實用的功能,但如何保證它的高可用倒是一件難事。實現MySQL主從複製高可用的工具,常見的有:mysql
可是,上面每一個高可用實現方法,都有這樣那樣的缺點,甚至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
。sql
廢話說了一大堆,仍是進入正文吧:MySQL組複製技術的簡介。數據庫
MGR(MySQL Group Replication)是MySQL官方在MySQL 5.7.17版本中以插件形式推出的主從複製高可用技術,它基於原生的主從複製,將各節點納入到一個組中,經過組內節點的通訊協商(組通訊協議基於Paxos算法),實現數據的強一致性、故障探測、衝突檢測、節點加組、節點離組等等功能。併發
例如,具備3個節點的組:高併發
這3個節點互相通訊,每當有事件發生,都會向其餘節點傳播該事件,而後協商,若是大多數節點都贊成此次的事件,那麼該事件將經過,不然該事件將失敗或回滾。工具
這些節點能夠是單主模型的(single-primary),也能夠是多主模型的(multi-primary)。單主模型只有一個主節點能夠接受寫操做,主節點故障時能夠自動選舉主節點。多主模型下,全部節點均可以接受寫操做,因此沒有master-slave的概念。插件
就這樣,完了。code