当异常大集团复制集团成员之间的消息发送,它会导致一些小组成员报告失败和开除。这是因为使用的单线程组复制的组通信引擎(XCom Paxos变体)占据了消息处理时间太长,所以一些小组成员可能报告接收者的失败。从MySQL 8.0.16,默认情况下,大消息自动分成碎片分开发送,收件人的重组。
系统变量group_replication_communication_max_message_size
指定组复制通信最大消息大小,上面消息是支离破碎的。默认的最大消息大小是10485760字节(10 MiB)。最大允许的值的最大价值是一样的replica_max_allowed_packet
和slave_max_allowed_packet
系统变量,这是1073741824字节(1 GB)。的设置group_replication_communication_max_message_size
必须小于replica_max_allowed_packet
或slave_max_allowed_packet
设置,因为灌肠器线程不能处理消息碎片大于最大允许数据包大小。关掉分裂、指定一个零值group_replication_communication_max_message_size
。
与大多数其他组复制系统变量,您必须重新启动组复制插件为变更生效。例如:
停止GROUP_REPLICATION;集全球group_replication_communication_max_message_size = 5242880;开始GROUP_REPLICATION;
消息传递一个支离破碎的消息被认为是完成当所有消息的碎片已经收到了所有的小组成员和重组。支离破碎的信息包括在他们的头部,使成员加入消息传输恢复早期的碎片,被加入。如果加入成员未能恢复片段,自慰本身集团。
为了复制组使用碎片,所有小组成员必须在MySQL 8.0.16或以上,和一组复制使用的组通信协议版本必须允许碎片。您可以检查使用的通信协议通过使用一组group_replication_get_communication_protocol ()
函数,它返回最古老的MySQL服务器版本,该集团支持。从MySQL版本5.7.14允许压缩信息,版本从MySQL 8.0.16也允许碎片的消息。如果所有小组成员都在MySQL 8.0.16以上,没有要求允许成员加入早期版本,您可以使用group_replication_set_communication_protocol ()
函数设置通信协议版本MySQL 8.0.16以上为了让碎片。有关更多信息,请参见部分18.5.1.4”,设置一组通信协议版本”。
如果复制组无法使用碎片,因为一些成员不支持它,系统变量group_replication_transaction_size_limit
可以用来限制交易集团接受的最大大小。在MySQL 8.0中,默认设置是大约143 MB。超过这个大小事务回滚。您还可以使用系统变量group_replication_member_expel_timeout
允许更多的时间(一个小时)前成员未能被怀疑是开除。