骏马金龙

网名骏马金龙,钟情于IT世界里的各种原理和实现机制,强迫症重症患者。爱研究、爱翻译、爱分享。特借此一亩三分田记录自己成长点滴!!!
我本问道人,道心不坚,必将与道无缘!

MySQL高可用之组复制(1):组复制技术简介

MySQL组复制系列文章:

  1. MySQL组复制大纲
  2. MySQL组复制(1):组复制技术简介
  3. MySQL组复制(2):配置单主模型的组复制
  4. MySQL组复制(3):配置多主模型的组复制
  5. MySQL组复制(4):组复制理论透彻分析

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的概念。

就这样,完了。

posted @ 2018-06-23 11:52  骏马金龙  阅读(2495)  评论(0编辑  收藏