XCom 消息缓存大小的最小设置为 1 GB,最高为 MySQL 8.0.20。从 MySQL 8.0.21 开始,最小设置为 134217728 字节 (128 MB),这使得可以在可用内存量有限的主机上进行部署。group_replication_message_cache_size
如果主机位于不稳定的网络上,则不建议使用
非常低的
设置,因为较小的消息缓存会使组成员在暂时失去连接后更难重新连接。
如果重新连接的成员无法从 XCom 消息缓存中检索到它需要的所有消息,则该成员必须离开该组并重新加入它,以便使用分布式恢复从另一个成员的二进制日志中检索丢失的事务。从 MySQL 8.0.21 开始,离开组的成员默认进行三次自动重新加入尝试,因此重新加入组的过程仍然可以在没有操作员干预的情况下进行。但是,与从 XCom 消息缓存中检索消息相比,使用分布式恢复重新加入的过程要长得多且复杂得多,因此成员需要更长的时间才能变得可用,并且可能会影响组的性能。在稳定的网络上,
如果您正在考虑降低缓存大小限制,您可以
memory_summary_global_by_event_name
使用以下语句查询 Performance Schema 表:
SELECT * FROM performance_schema.memory_summary_global_by_event_name
WHERE EVENT_NAME LIKE 'memory/group_rpl/GCS_XCom::xcom_cache';
这将返回消息缓存的内存使用统计信息,包括缓存条目的当前数量和缓存的当前大小。如果您降低缓存大小限制,XCom 将删除已确定和交付的最旧条目,直到当前大小低于限制。在此删除过程进行时,XCom 可能会暂时超过缓存大小限制。