20.7.7.2 无法访问多数超时
默认情况下,网络分区导致成员处于少数状态时,不会自动离开组。您可以使用系统变量group_replication_unreachable_majority_timeout
设置成员等待少数状态的秒数,然后退出组。设置超时意味着您不需要主动监控少数组成员在网络分区后,避免了由于不当干预而导致的脑裂情况(两个版本的组成员)。
当group_ replication_unreachable_majority_timeout
超时到期时, minority 组中的所有待处理事务将被回滚,并且该组的服务器转换到ERROR
状态。您可以使用group_ replication_autorejoin_tries
系统变量强制成员尝试自动重新加入组。在这个点上,该特性默认是活动的;成员将尝试三次自动重新加入。如果自动重新加入过程不成功或未尝试, minority 成员将遵循group_ replication_exit_state_action
指定的退出动作。
在决定是否设置不可达多数超时时,考虑以下几点:
-
例如,在具有两个或四个服务器的对称组中,如果两部分都包含等数量的服务器,那么这两个组都会认为自己处于少数状态,并进入
ERROR
状态。在这种情况下,组没有功能分区。 -
在少数组存在时,对少数组处理的事务被接受,但由于少数服务器无法达到 quorum,因此被阻塞,直到在那些服务器上发出
STOP GROUP_ REPLICATION
或不可达多数超时达到为止。 -
如果不设置不可达多数超时,少数组的服务器从不自动进入
ERROR
状态,您必须手动停止它们。 -
设置不可达多数超时对少数组的服务器无效,如果在检测到多数丢失后设置该超时。
如果不使用group_ replication_ unreachable_majority_timeout
系统变量,网络分区事件的处理过程在第20.7.8节,“Handling a Network Partition and Loss of Quorum”中描述,该过程涉及检查服务器是否可用,并在必要时强制新的组成员身份。