在multi-primary模式(group_replication_single_primary_mode =了
)没有成员有着特殊的作用。兼容的任何成员与其他成员设置为读写模式时加入该组织,并能写事务的过程,即使他们同时发行。
如果成员停止接受写事务,例如,在一个意想不到的服务器退出客户端连接到它能被重定向,或失败,其他成员的读写模式。组复制本身并不处理客户端故障转移,所以你需要安排这个使用中间件框架等MySQL 8.0路由器一个代理,一个连接器,或应用程序本身。图18.5中,“客户故障转移”显示客户端可以连接到另一个小组成员如果离开了团队一员。
复制是一个最终一致性的系统。这意味着一旦传入流量减慢或停止,所有的小组成员有相同的数据内容。交通流动时,事务可以外部化在其他一些成员,尤其是一些成员比别人少写吞吐量,创建陈旧读的可能性。在multi-primary模式下,慢的成员也可以建立一个过度积压事务验证和应用,导致冲突和认证失败的风险更大。限制这些问题,您可以激活和优化组复制的流控制机制来减少快和慢的成员之间的区别。流控制的更多信息,请参阅部分18.7.2,“流量控制”。
从MySQL 8.0.14,如果你想要一个事务一致性保证每笔交易组,您可以使用group_replication_consistency
系统变量。你可以选择设置适合你的组织和优先级的工作负载进行数据读写,考虑到性能的影响所需的同步增加的一致性。你也可以设置系统变量对个人保护特别是concurrency-sensitive事务会议。有关事务一致性的更多信息,请参阅部分18.5.3,“事务一致性保证”。
当一群部署在multi-primary模式中,事务是检查,以确保它们是兼容模式。下面的严格一致性检查当集团在multi-primary复制部署模式:
如果一个事务执行序列化隔离级别下,那么它的提交失败时同步与集团本身。
如果一个事务对一个表执行与级联外键约束,那么它的提交失败时同步与集团本身。
检查控制group_replication_enforce_update_everywhere_checks
系统变量。在multi-primary模式下,通常应该被设置为系统变量在
可以被释放,但检查通过设置系统变量从
。当部署在单一主模式下,系统变量必须设置从
。
在一组复制拓扑在multi-primary模式中,需要注意执行数据定义语句时,也常被称作数据定义语言(DDL)。
MySQL 8.0引入了支持原子数据定义语言(DDL)语句,在完整的DDL语句要么是作为一个单一的原子事务提交或回滚。然而,DDL语句,原子或否则,隐式地结束活跃在当前会话的任何事务,如果你做了一个提交
在执行该语句。这意味着不能在另一个事务中执行DDL语句,在事务控制语句等开始事务……提交
,或者与其他语句组合在同一事务。
组复制基于乐观的复制模式,执行语句是乐观地和回滚之后如果有必要。没有获得集团的每个服务器执行协议。因此,更需要注意当复制DDL语句在multi-primary模式。如果你让模式变化(使用DDL)和修改对象包含的数据(使用DML)对于同一个对象,改变需要通过相同的服务器,而模式操作尚未完成和复制无处不在。未能这样做可能导致数据不一致时操作中断或只有部分完成。如果集团是部署在单一主模式这个问题不会发生,因为所有更改都是通过同一台服务器上,执行的主。
有关原子DDL支持MySQL 8.0,以及由此产生的行为变化的复制某些语句,看看13.1.1部分,“原子数据定义语句支持”。
为了优化兼容性和性能,所有的组的成员都应该运行MySQL服务器的相同版本,因此组复制。在multi-primary模式中,这是更重要的,因为通常会加入集团所有成员读写模式。如果一组包括成员运行不止一个MySQL服务器版本,有一个潜在的一些成员与他人是不相容的,因为他们支持功能其他人不清楚,或缺乏其他功能。为了防止这一点,当一个新成员加入(包括前成员已经升级并重新启动),会员进行兼容性检查小组的其他成员。
这些兼容性检查尤为重要的一个结果multi-primary模式。如果加入成员运行MySQL服务器版本高于现有的群体成员的最低版本运行,它连接组,但仍以只读模式。(在一组运行在单一主模式下,新添加的成员在任何情况下默认是只读的。)成员运行MySQL 8.0.17或更高版本考虑的补丁版本发布时检查他们的兼容性。成员运行MySQL 8.0.16或更低,或MySQL 5.7,只考虑主要版本。
在一组与成员在multi-primary模式下运行,使用不同的MySQL服务器版本,自动组复制管理成员的读写和只读状态运行MySQL 8.0.17或更高。如果离开了团队,成员运行版本的成员,现在最低的自动设置为读写模式。当你改变一组运行在单一主模式在multi-primary运行模式,使用group_replication_switch_to_multi_primary_mode ()
自动复制功能,集团成员设置为正确的模式。成员被自动放置在只读模式如果他们正在运行MySQL服务器版本高于最低版本出现在集团和成员的最低版本放在读写模式下运行。
完整信息的版本兼容性在一组以及这如何影响行为的一组在升级过程中,明白了部分18.8.1,“一群结合不同的成员版本”。