MGR简介
MySQL Group Replication,简称MGR,它是MySQL官方推出的基于paxos分布式一致性协议的状态机复制,实现了分布式下数据的最终一致性。同时MGR提供了高可用、高扩展、高可靠的MySQL集群解决方案,它也是金融级分布式数据库之一。
MGR适用场景
MGR天生就是为金融场景设计的,例如:支付,证券交易,保险,银行等等。因为这些场景要求数据必须做到零丢失,数据库可用性在4个9,甚至5个9(年度停机时间不超过5分钟)。
MGR采用多副本,在2N+1个节点集群中,集群只要N +1个节点还存活着,数据库就能稳定的对外提供服务。
MGR运行模式
MGR运行模式有2种
- 单主模式(single-primary mode)
- 多主模式(multi-primary mode)
单主模式:
多主模式:
MGR选举原理
MGR单主模式选举原理
MGR多主模式选举原理
MGR复制原理
在2N+1个节点组成的单主模式组复制集群中,主库上一个事务提交时,会将事务修改记录相关的信息和事务产生的BINLOG事件打包生成一个写集(WRITE SET),将写集发送给所有节点,并通过至少N个节点投票通过才能事务提交成功。
MGR要求
1.必须适用innodb存储引擎 2.创建的业务表,必须要有主键 3.MGR必须适用IPv4网络,不支持IPv6 4.MGR复制网络必须和业务网络隔离 5.binlog日志格式必须为row模式 6.关闭二进制日志校验和,设置--binlog-checksum=NONE 7.小写 table 格名称. 在所有组成员上将--lower-case-table-names设置为相同的值 8.隔离级别设置为RC
MGR限制
1.MGR不支持SERIALIZABLE 隔离级别 2.MGR集群节点不能超过9 3.MGR不支持大事务,事务大小最好不超过143MB,当事务过大,无法在5 秒的时间内通过网络在组成员之间复制消息,则可能会怀疑成员失败了,然后将其驱逐出局。 4.并发 DDL 与 DML 操作. 当使用多主模式时,不支持针对同一对象但在不同服务器上执行的并发数据定义语句和数据操作语句。 5.对表的级联约束的外键支持不好,不建议适用。
作者:月牙讲数据库运维