10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 41.6 mb
PDF (A4)- 41.7 mb
手册页(TGZ)- 262.5 kb
手册页(Zip)- 372.6 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

MySQL 8.0参考手册/.../ 故障检测和网络划分的响应

18.7.7故障检测和网络划分的响应

Group Replication的故障检测机制旨在识别不再与该组通信的组成员,并在它们似乎出现故障时将其驱逐。使用故障检测机制可以增加该组包含大多数正常工作成员的机会,因此来自客户机的请求可以被正确处理。

通常,所有组成员定期与所有其他组成员交换消息。如果某个组成员在5秒内没有收到来自某个特定成员的任何消息,当此检测周期结束时,就会对该成员产生怀疑。当怀疑超时时,被怀疑的成员被认为失败了,并被逐出组。一个被驱逐的成员被从其他成员看到的成员列表中删除,但它不知道它已被驱逐出组,因此它认为自己是在线的,而其他成员是不可联系的。如果成员实际上没有失败(例如,因为临时网络问题而断开了连接),并且能够恢复与其他成员的通信,那么它将收到一个视图,其中包含它已被逐出组的信息。

组成员(包括失败的成员本身)对这些情况的响应可以在流程中的许多点上配置。默认情况下,如果成员被怀疑失败,会发生以下行为:

  1. 直到MySQL 8.0.20,当怀疑被创建时,它会立即超时。被怀疑的成员有责任被开除,一旦过期的怀疑被小组确定。成员可能会在超时后继续存活几秒钟,因为对过期怀疑的检查是定期执行的。从MySQL 8.0.21开始,在怀疑超时之前增加了5秒的等待时间,怀疑成员将被开除。

  2. 如果一个被开除的成员恢复通信并意识到自己被开除了,在MySQL 8.0.20范围内,它不会尝试重新加入组。从MySQL 8.0.21开始,它会自动尝试三次重新加入组(每次尝试之间有5分钟),如果这个自动重新加入过程不起作用,它就会停止尝试重新加入组。

  3. 当被驱逐的成员不试图重新加入该组时,它将切换到超级只读模式并等待操作员的注意。(例外是在MySQL 8.0.12到8.0.15的版本中,默认是让成员自行关闭。从MySQL 8.0.16开始,行为被更改为与MySQL 5.7中的行为相匹配。

您可以使用本节中描述的Group Replication配置选项永久或临时地更改这些行为,以适应您的系统需求和优先级。如果您正在经历由较慢的网络或机器、具有较高意外短暂中断率的网络或计划中的网络中断引起的不必要的驱逐,请考虑增加驱逐超时和自动重新连接尝试。从MySQL 8.0.21开始,默认设置已经朝着这个方向改变,以减少在这些情况下需要操作员干预来恢复被驱逐成员的频率。请注意,当成员正在执行上述任何默认行为时,尽管它不接受写操作,但如果成员仍在与客户端通信,则仍然可以执行读操作,随着时间的推移,读取失效的可能性会越来越大。如果避免过期读取比避免操作员干预更重要,那么可以考虑减少驱逐超时和自动重新连接尝试,或者将它们设置为零。

由于网络分区,未发生故障的成员可能会与复制组的部分(而不是全部)失去联系。例如,在一组5台服务器(S1,S2,S3,S4,S5)中,如果(S1,S2)和(S3,S4,S5)之间断开连接,则存在一个网络分区。第一组(S1,S2)现在是少数群体,因为它不能接触超过一半的群体。由少数群体成员处理的任何事务都被阻塞,因为大多数群体无法到达,因此该群体无法达到法定人数。有关此场景的详细描述,请参见18.5.4节“网络分区”.在这种情况下,默认的行为是少数和多数的成员都留在组中,继续接受交易(尽管它们在少数的成员上被阻止),并等待操作员干预。这个行为也是可配置的。

请注意,如果组成员在一个不支持相关设置的旧MySQL Server版本中,或者在一个具有不同默认值的版本中,他们会根据上述默认行为对自己和其他组成员采取行动。属性的成员group_replication_member_expel_timeout一旦检测到过期的怀疑,系统变量就会驱逐其他成员,即使其他成员支持系统变量并具有更长的超时设置,这种驱逐也会被其他成员接受。