MGR介绍
MySQL Group Replication(简称MGR)是MySQL官方于2016年12月12日推出的一款高可用与高扩展的解决方案,它提供了高可用、高扩展、高可靠的MySQL集群服务。既可以很好的保证数据一致性又可以自动切换,具备故障检查功能、支持多节点写入。
MGR是MySQL自带的一个插件,可以灵活部署。MySQL MGR集群是多个MySQL Server节点共同组成的分布式集群,每个Server都有完整的副本,它是基于ROW格式的二进制日志文件和GTID特性。
MGR优点
1、 强一致性,基于原生复制及paxos协议的组复制技术,并以插件方式提供,提供一致性数据安全保证
2、 高容错性,只要不是大多数节点环境坏掉就可以继续工作,有自动检查机制,当不同节点产生资源争用冲突时,不会出现错误,按照先到者优先原则进行处理,并内置自动化脑裂防护机制。
3、 高扩展性,系欸但的新增和移除都是自动的,新节点加入后,会自动从其他节点上同步状态,直到新节点和其他节点保持一致,如果某节点被移除了,其他节点自动更新组信息,自动维护新的组信息。
4、 高灵活性,有单主模式和多主模式,单主模式下会自动选主,所有的更新操作都是在主上进行;多主模式下,所有server都可以同时处理更新操作
MGR约束
1、 仅支持InnoDB表,并且每张表一定要有一个主键,用于做write set的冲突检测
2、 必须打开GTID特性,二进制日志格式必须设置为ROW,由于选主与 write set;主从状态信息存于表中(--master-info-repository=TABLE、--relay-log-info-repository=TABLE), --log-slave-updates打开
3、 MGR不支持大事务,事务大小最好不要超过143MB,当事务过大,无法在5s的时间内通过网络在组成员之间复制消息,则可能怀疑成员失败,然后将其驱逐出局
4、 目前一个MGR集群最多支持9个节点
5、 不支持外键于save point特性,无法做全局间的约束检测与部分事务回滚
6、 二进制日志不支持Binlog Event Checksum
MGR适用场景
金融交易、重要数据存储、对主从一致性要求高的场景
核心数据总量未过亿
读多写少的应用场景,如互联网电商