Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

20.7.7.2 无法访问多数超时

默认情况下,在网络分区中发现自己处于少数的情况下,成员不会自动离开组。你可以使用系统变量 group_replication_unreachable_majority_timeout 设置成员在失去与多数组成员的联系后等待的秒数,然后退出组。设置超时意味着你不需要积极监控网络分区后的少数组服务器,并且可以避免由于不适当的干预而导致的脑裂情况(具有两个版本的组成员身份).

当指定的超时 group_replication_unreachable_majority_timeout 到期时,所有由成员和少数组中的其他成员处理的挂起事务将回滚,服务器将移到 ERROR 状态。在这个点上,你可以使用 group_replication_autorejoin_tries 系统变量强制成员尝试自动重新加入组。该功能默认启用;成员将尝试自动重新加入三次。如果自动重新加入过程不成功或未尝试,少数成员将遵循由 group_replication_exit_state_action 指定的退出操作。

在决定是否设置无法访问多数超时时,请考虑以下几点:

  • 在对称组中,例如具有两个或四个服务器的组,如果两个分区都包含相同数量的服务器,那么两个组都将认为自己处于少数并进入 ERROR 状态。在这种情况下,组没有功能分区。

  • 只要少数组存在,少数组中的所有事务都将被接受,但由于少数服务器无法达到法定人数,因此被阻止,直到在这些服务器上发出 STOP GROUP_REPLICATION 或达到无法访问多数超时。

  • 如果你不设置无法访问多数超时,那么少数组中的服务器将永远不会自动进入 ERROR 状态,你必须手动停止它们。

  • 设置无法访问多数超时对少数组服务器没有影响,如果在检测到少数情况后设置该超时。

如果你不使用 group_replication_unreachable_majority_timeout 系统变量,那么在网络分区事件中的操作员干预过程将在 第 20.7.8 节“处理网络分区和法定人数丢失” 中描述。该过程涉及检查哪些服务器正在运行,并在必要时强制新的组成员身份。