简介
MySQL 5.7.17 中发布了一个重要的功能:Group Replication 组复制
Group Replication 是干什么的?
可以简单理解为:通过 Group Replication 可以让多个Mysql节点中的数据完全一致
对其中任意一个节点执行修改后,其他节点都会自动同步,并保证数据的一致性
组复制与主从复制有什么区别?
在主从复制结构中,slave只是master的一个附属,master自顾自的执行写操作,不管slave是否跟上没,slave自己努力的尽量保持和master保持一致
而在组复制中,大家都是master,一个master收到写请求后,在提交这个事务之前,必须通知其他master,大家同意以后,都执行一下这个写操作,否则,都不执行,这样就保证了大家的数据都一样
特点
(1)高一致性
通过著名的分布式一致性算法Paxos来保证各节点状态相同
(2)高容错
只要不是大多数节点坏掉就可以继续工作
有自动检测机制,当不同节点产生资源争用冲突时,不会出现错误,按照先到者优先原则进行处理
内置了自动化脑裂防护机制
(3)弹性
节点的新增和移除都是自动的
新节点加入后,会自动从其他节点上同步状态,直到新节点和其他节点保持一致
如果某节点被移除了,其他节点自动感知,自动维护新的group信息
(4)灵活
有 单主模式 和 多主模式
单主模式下,会自动选主,所有更新操作都在主上进行
多主模式下,所有server都可以同时处理更新操作
应用场景示例
(1)弹性复制
例如云数据库服务,需要一个非常灵活的复制环境,server数量可以动态增加或者收缩,并且对外没有影响
(2)高可用分片
分片是水平扩展写能力的常用方法,使用 Group Replication 就可以实现高可用分片,每个分片对应一个复制组
(3)替代主从复制
使用单一的 master 会突出单点问题,向整个组写入的话会更有可扩展性