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