Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


20.7.2 流控制

组复制确保事务只有在大多数组成员都接收并同意事务的相对顺序后才能提交。这一approach在总写入数量不超过组中的任何成员写入能力时效果良好。如果实际情况中写入数量超过了某些成员的写入能力,特别是写入者成员的写入能力,那么这些成员可能会落后于写入者。

一些成员落后组会带来一些问题,特别是读取这些成员可能会外部化非常老的数据。具体来说,某些成员落后原因可能导致其他组成员需要保存更多或少量的复制上下文,以满足来自慢速成员的数据传输请求。

然而,在复制协议中有一种机制可以避免成员之间的距离太大,这称为流控制机制。它旨在解决以下几个目标:

  1. 保持成员之间的距离足够小,以使缓冲和成员之间的同步化问题变得较小;

  2. 快速适应变化的条件,如不同的工作负载或组中的更多写入者;

  3. 为每个成员提供可用的写入容量的公平分配;

  4. 避免浪费资源,不要减少通过率超过必要的程度。

考虑到 Group Replication 的设计,决定是否需要 throttling 可能会根据两个工作队列:(i) 认证队列;(ii) 二进制日志应用程序队列。每当其中一个队列的大小超过用户定义的阈值时, throttling 机制将被触发。只需配置:(i) 是否在认证器或应用程序级别执行流量控制,或者两者都;(ii) 每个队列的阈值。

流量控制依赖于两个基本机制:

  1. 监控成员以收集关于通过率和队列大小的统计信息,以便对每个成员的写入压力做出明智的估计;

  2. 限制那些试图在每个时间点超过可用容量的成员。