MYSQL–架构–MGR–理论–01–MGR是什么
1、MGR是什么
- MGR(MySQL Group Replication)是以插件形式推出的主从复制高可用技术
- MGR基于原生的主从复制,将各节点归入到一个组中,通过组内节点的通信协商(组通信协议基于Paxos算法),实现数据的强一致性、故障探测、冲突检测、节点加组、节点离组等等功能。
- 适用金融场景:支付,证券交易,保险,银行等金融场景。因为这些场景要求数据必须做到零丢失,数据库可用性在4个9,甚至5个9(年度停机时间不超过5分钟)。
- 提供了高一致性,高容错性,高扩展性,高灵活性的MySQL集群解决方案
- 组复制是一种无共享复制方案,其中每个服务器都有自己的整个数据副本
- 在2N+1个节点集群中,集群只要N+1个节点还存活着,数据库就能稳定的对外提供服务。
- 集群最多接入9个节点。
- 运行模式
- 单主模式
- 多主模式
1.1、举例
- 上图是具有3个节点的组,这3个节点互相通信,每当有事件发生,都会向其他节点传播该事件,然后协商,如果大多数节点都同意这次的事件,那么该事件将通过,否则该事件将失败或回滚。
- 节点类型可以是单主模型,也可以是多主模型的
- 单主模型只有一个主节点可以接受写操作,主节点故障时可以自动选举主节点。
- 多主模型下,所有节点都可以接受写操作,所以没有master-slave的概念。
2、MGR的特性
2.1、高一致性
基于原生复制及paxos协议的组复制技术,并以插件的方式提供,实现数据的最终一致性;
2.2、高容错性
- 可自动进行故障检测、自动切换,具备防脑裂机制
- 在2N+1个节点集群中,集群只要N+1个节点还存活着,数据库就能稳定的对外提供服务。
- 当不同节点产生资源争用冲突时,不会出现错误,按照先到者优先原则进行处理
2.3、高扩展性
节点的新增和移除都是自动的,新节点加入后,会自动从其他节点上同步状态,直到新节点和其他节点保持一致,如果某节点被移除了,其他节点自动更新组信息,自动维护新的组信息;
2.4、高灵活性
- 单主模式:
- 会自动选主
- 所有写操作都在master进行
- 多主模式:
- 所有的机器都是master
- 都支持读写
3、MGR为分布式状态机复制提供了服务器之间的强大协调
- 服务器属于同一组时,它们会自动进行协调。
- 该组可以在具有自动主库选举的单主模式下运行,其中一次仅一个服务器接受更新。或者,对 于更高级的用户,可以在多主模式下部署,在该模式下,所有服务器都可以接受更新,即使它们是同时发布的。这种功能的代价是应用程序必须解决此类部署所施加的限制。
4、组的视图一致
- 有一个内置的组成员资格服务,可以使组的视图一致,并且在任何给定时间点均可用于所有服务器。
- 服务器可以离开/加入该组,视图将自动更新。
- 有时服务器可能会意外离开该组,在这种情况下,故障检测机制会检测到此情况并通知该组视图已更改
5、一致性复制
- 对于要提交的事务,组的大多数必须在全局事务顺序中就给定事务的顺序达成一致。
- 每个服务器分别决定提交或中止事务,但所有服务器都要做出相同的决定。
- 如果存在网络分区,分裂导致成员无法达成一致,则系统将不会继续运行,直到解决此问题。因此,还有一个内置的自动裂脑保护机制。
6、组通信系统(GCS,Group Communication System)
- 提供 故障检测机制
- 提供 组成员资格服务、安全以及有序的消息传递机制。
- 可确保在服务器组之间数据的一致性复制
- 该技术的核心是Paxos算法的实现。