17.1.3.2 故障检测

Group Replication 的故障检测机制是一种分布式服务,能够识别组中的服务器没有与其他服务器通信,因此怀疑服务中断。如果该小组的共识是怀疑可能是真的,则该小组将协调一致地决定开除该成员。驱逐不沟通的成员是必要的,因为该组需要其大多数成员就交易或观点变化达成一致。如果某个成员不参与这些决策,则该组必须将其移除,以增加该组包含大多数正确工作成员的机会,因此可以继续处理交易。

在复制组中,每个成员都有一个与其他成员的点对点通信通道,从而创建一个完全连接的图。这些连接由组通信引擎(XCom,一种 Paxos 变体)管理,并使用 TCP/IP 套接字。一个通道用于向成员发送消息,另一个通道用于接收来自成员的消息。如果一个成员在 5 秒内没有收到来自另一个成员的消息,它怀疑该成员已经失败,并UNREACHABLE在其自己的 Performance Schema 表中 列出该成员的状态replication_group_members. 通常,两个成员会互相怀疑对方失败了,因为他们彼此之间没有沟通。有可能,尽管不太可能,成员 A 怀疑成员 B 失败了,但成员 B 不怀疑成员 A 失败了——可能是由于路由或防火墙问题。成员也可能对自己产生怀疑。一个与团队其他成员隔离开来的成员怀疑其他人都失败了。

如果怀疑持续超过 10 秒,则怀疑成员会尝试将其认为可疑成员有问题的观点传播给组中的其他成员。根据其内部 XCom 节点编号计算,怀疑成员只有在通知时才会这样做。如果一个成员实际上与该组的其他成员隔离开来,它可能会尝试传播它的观点,但这不会产生任何后果,因为它无法确保其他成员的法定人数同意它。只有当成员是通知者时,怀疑才会产生后果,并且怀疑持续的时间足以传播到组的其他成员,并且其他成员也同意。在这种情况下,

有关您可以配置以指定工作组成员对故障情况的响应的组复制系统变量的信息,以及疑似失败的组成员采取的操作,请参阅 对故障检测和网络分区的响应