17.7.2 组复制限制

组复制存在以下已知限制。请注意,在故障转移事件期间,针对多主要模式组描述的限制和问题也可以适用于单主要模式集群,而新选举的主要对象会从旧的主要对象中清除其申请者队列。

Tip

组复制构建在基于 GTID 的复制之上,因此您还应该注意第 16.1.3.6 节,“使用 GTID 复制的限制”

Note

对于处于多主模式的组,除非您在应用程序中依赖REPEATABLE READ语义,否则我们建议对组复制使用READ COMMITTED隔离级别。 InnoDB 不使用READ COMMITTED中的间隙锁,该间隙将 InnoDB 中的本地冲突检测与组复制执行的分布式冲突检测对齐。对于单主模式的组,只有主模式接受写操作,因此READ COMMITTED隔离级别对组复制并不重要。

在单主模式下,这不是问题,因为它不允许同时写入组中的多个成员,因此不存在未检测到冲突的风险。

Groups 人数上限

可以成为一个复制组成员的 MySQL 服务器的最大数量为 9.如果其他成员尝试加入该组,则其请求将被拒绝。从测试和基准测试中可以确定此限制是安全的边界,在此范围内,组可以在稳定的局域网上可靠地运行。

Transaction 规模限制

如果单个事务产生的消息内容足够大,以致于无法在 5 秒的时间内通过网络在组成员之间复制消息,则可能会怀疑成员失败了,然后将其驱逐出局,只是因为他们正在忙于处理消息。Transaction。大型事务还会由于内存分配问题而导致系统变慢。为避免这些问题,请使用以下缓解措施:

如果您已停用消息压缩并且未指定最大事务大小,则复制组成员上的应用程序线程可以处理的消息的大小上限为成员的slave_max_allowed_packet系统变量的值,该变量具有一个默认值和最大值 1073741824 字节(1 GB)。当接收成员尝试处理超过此限制的消息时,该消息将失败。组成员可以发起并尝试传输到该组的消息的大小上限为 4294967295 字节(大约 4 GB)。这是组通信引擎接受的用于组复制(XCom,Paxos 变体)的数据包大小的硬限制,它在 GCS 处理完消息后接收消息。当发起成员尝试 Broadcast 超过此限制的消息时,该消息将失败。

首页