MYSQL–架构–MGR–理论–01–MGR是什么


1、MGR是什么

  1. MGR(MySQL Group Replication)是以插件形式推出的主从复制高可用技术
  2. MGR基于原生的主从复制,将各节点归入到一个组中,通过组内节点的通信协商(组通信协议基于Paxos算法),实现数据的强一致性、故障探测、冲突检测、节点加组、节点离组等等功能。
  3. 适用金融场景:支付,证券交易,保险,银行等金融场景。因为这些场景要求数据必须做到零丢失,数据库可用性在4个9,甚至5个9(年度停机时间不超过5分钟)。
  4. 提供了高一致性,高容错性,高扩展性,高灵活性的MySQL集群解决方案
  5. 组复制是一种无共享复制方案,其中每个服务器都有自己的整个数据副本
  6. 在2N+1个节点集群中,集群只要N+1个节点还存活着,数据库就能稳定的对外提供服务。
  7. 集群最多接入9个节点。
  8. 运行模式
    1. 单主模式
    2. 多主模式

1.1、举例

  1. 上图是具有3个节点的组,这3个节点互相通信,每当有事件发生,都会向其他节点传播该事件,然后协商,如果大多数节点都同意这次的事件,那么该事件将通过,否则该事件将失败或回滚。
  2. 节点类型可以是单主模型,也可以是多主模型的
    1. 单主模型只有一个主节点可以接受写操作,主节点故障时可以自动选举主节点。
    2. 多主模型下,所有节点都可以接受写操作,所以没有master-slave的概念。

2、MGR的特性

2.1、高一致性

基于原生复制及paxos协议的组复制技术,并以插件的方式提供,实现数据的最终一致性;

2.2、高容错性

  1. 可自动进行故障检测、自动切换,具备防脑裂机制
  2. 在2N+1个节点集群中,集群只要N+1个节点还存活着,数据库就能稳定的对外提供服务。
  3. 当不同节点产生资源争用冲突时,不会出现错误,按照先到者优先原则进行处理

2.3、高扩展性

节点的新增和移除都是自动的,新节点加入后,会自动从其他节点上同步状态,直到新节点和其他节点保持一致,如果某节点被移除了,其他节点自动更新组信息,自动维护新的组信息;

2.4、高灵活性

  1. 单主模式:
    1. 会自动选主
    2. 所有写操作都在master进行
  2. 多主模式:
    1. 所有的机器都是master
    2. 都支持读写

3、MGR为分布式状态机复制提供了服务器之间的强大协调

  1. 服务器属于同一组时,它们会自动进行协调。
  2. 该组可以在具有自动主库选举的单主模式下运行,其中一次仅一个服务器接受更新。或者,对 于更高级的用户,可以在多主模式下部署,在该模式下,所有服务器都可以接受更新,即使它们是同时发布的。这种功能的代价是应用程序必须解决此类部署所施加的限制。

4、组的视图一致

  1. 有一个内置的组成员资格服务,可以使组的视图一致,并且在任何给定时间点均可用于所有服务器。
  2. 服务器可以离开/加入该组,视图将自动更新。
    1. 有时服务器可能会意外离开该组,在这种情况下,故障检测机制会检测到此情况并通知该组视图已更改

5、一致性复制

  1. 对于要提交的事务,组的大多数必须在全局事务顺序中就给定事务的顺序达成一致。
    1. 每个服务器分别决定提交或中止事务,但所有服务器都要做出相同的决定。
    2. 如果存在网络分区,分裂导致成员无法达成一致,则系统将不会继续运行,直到解决此问题。因此,还有一个内置的自动裂脑保护机制。

6、组通信系统(GCS,Group Communication System)

  1. 提供 故障检测机制
  2. 提供 组成员资格服务、安全以及有序的消息传递机制。
  3. 可确保在服务器组之间数据的一致性复制
  4. 该技术的核心是Paxos算法的实现。