10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册摘录

18.7.4消息碎片

当在组复制组成员之间发送异常大的消息时,可能会导致报告某些组成员失败并将其逐出组。这是因为Group Replication的组通信引擎(XCom, Paxos变体)使用的单线程处理消息的时间过长,因此一些组成员可能会报告接收方失败。从MySQL 8.0.16开始,默认情况下,大消息被自动分割成片段,分别发送并由接收者重新组装。

系统变量group_replication_communication_max_message_size为Group Replication通信指定最大消息大小,超过该大小的消息将被分段。缺省情况下,最大消息大小为10485760字节(10 MiB)。的最大值相同slave_max_allowed_packet1073741824字节(1gb)。的设置group_replication_communication_max_message_size一定要小于slave_max_allowed_packet设置,因为应用程序线程不能处理大于slave_max_allowed_packet.要关闭碎片,请为。指定零值group_replication_communication_max_message_size

与大多数其他Group Replication系统变量一样,必须重新启动Group Replication插件才能使更改生效。例如:

停止GROUP_REPLICATION;设置全局group_replication_communication_max_message_size= 5242880;开始GROUP_REPLICATION;

当所有分组成员都已接收并重新组装了消息的所有片段时,就认为分段消息的消息传递是完整的。碎片消息包括其头中的信息,这些信息使在消息传输期间加入的成员能够恢复在它加入之前发送的早期碎片。如果加入成员无法恢复碎片,它将自己从组中逐出。

为了让一个复制组使用分片,所有的组成员必须是MySQL 8.0.16或更高,并且组使用的group replication通信协议版本必须允许分片。可以使用。命令检查组中使用的通信协议group_replication_get_communication_protocol ()UDF,它返回组支持的最老的MySQL服务器版本。MySQL 5.7.14版本允许消息压缩,MySQL 8.0.16版本也允许消息碎片化。如果所有的组成员都是MySQL 8.0.16或以上版本,并且没有要求允许早期版本的成员加入,你可以使用group_replication_set_communication_protocol ()UDF将通信协议版本设置为MySQL 8.0.16或以上,以便允许分片。有关更多信息,请参见第18.5.1.4节,“设置组通信协议版本”

如果复制组由于某些成员不支持而不能使用碎片,则系统变量group_replication_transaction_size_limit可用于限制组接受的最大交易规模。在MySQL 8.0中,默认设置大约是143 MB。超过这个大小的事务会被回滚。您也可以使用系统变量group_replication_member_expel_timeout允许有额外的时间(最多一个小时),否则有失败嫌疑的成员将被开除出小组。