前言:
MySQL的组复制(MySQL Group Replication)
1、组复制是基于分布式一致性协议Paxos实现数据最终统一性的MySQL插件,通过这种插件可以
实现弹性、高可用、容错复制拓扑结构。
MySQL组复制提供分布式状态机复制,在服务器之间具有协调性,当数据库服务器属于同一组时,
组复制机制可以自动协调它们,该组可以在具有自动选择新主库功能的单主模式下操作,这种情况
下一个组只有主节点才可以作写操作,或者,对于更高级的用户,该组可以以多主模式部署,即多个
节点都可以作读写操作,即使它们是同时发过来的写请求,不过在这种情况下,应用层会有部分额外
的限制。
数据一致性保证
对于只读(RO)事务,组间实例无需进行通讯,就可以处理事务,但是对于读写(EW)
事务,需要经过组内大多数节点决议,来决定事务是否可以提交。
数据并发冲突处理
在高并发的多写模式(MGR的一种运行模式下),节点间事务提交可能会产生冲突,比
如两个不同事务在两个结点上操作同一行数据,这个时候就会产生冲突,首先Group
Replication(GR)能够识别这个冲突,然后对此处理采用乐观策略;依赖事务提交的
先后的顺序,先发起提交的节点能够正确提交,而后面的提交,会失败。
节点故障自动检测
GR自带故障检测机制,可以识别组内成员是否挂掉(组内节点心跳检测),当一个节点
失效,将由其他节点决定是否将这个失效的节点从group里面进行剔除,当然,这是建立在
满足大多数节点存活并且可以进行决议的前提上的。组成员自动管理GR自动维护组内节点
的状态(在线?存活?挂掉?),对于失败的节点,由其他节点决定是否剔除,对于新加入的
节点,GR会自动维护他的视图与其他节点的试图保持一致。关于集群内节点的状态,可以
通performance_schema.replication_group_members表查看。
容错能力