#### 18.1.4.1集团成员资格

[](<>)[](<>)[](<>)

在MySQL组复制中，一组服务器构成一个复制组。组有一个名称，其形式为UUID。这个团队是动态的，服务器可以随时（自愿或非自愿）离开并加入。每当服务器加入或离开时，该组都会进行自我调整。

如果服务器加入该组，它会通过从现有服务器获取缺少的状态来自动更新自己。如果一台服务器离开了该组，例如，它被关闭进行维护，其余的服务器会注意到它已经离开，并自动重新配置该组。

组复制具有组成员资格服务，该服务定义哪些服务器处于联机状态并参与组。在线服务器列表被称为*看法*。组中的每台服务器都有一个一致的视图，即哪些服务器是在给定时刻积极参与组的成员。

组成员不仅必须就事务提交达成一致，还必须就当前视图达成一致。如果现有成员同意新服务器应成为组的一部分，则会重新配置组以将该服务器集成到其中，从而触发视图更改。如果服务器自愿或不自愿离开组，组将动态重新安排其配置，并触发视图更改。

在成员自愿离开组的情况下，它首先启动动态组重新配置，在此期间，所有成员必须在没有离开服务器的情况下就新视图达成一致。但是，如果成员非自愿离开组，例如因为意外停止或网络连接中断，则无法启动重新配置。在这种情况下，组复制的故障检测机制会在短时间内识别出成员已离开，并建议在没有故障成员的情况下重新配置组。与自愿离开的成员一样，重新配置需要得到组中大多数服务器的同意。然而，如果团队无法达成一致意见，例如，因为其划分方式导致大多数服务器都不在线，那么系统将无法动态更改配置，并阻止出现大脑分裂的情况。这种情况需要管理员的干预。

成员可以在短时间内脱机，然后在故障检测机制检测到其故障之前，以及在重新配置组以删除成员之前，再次尝试重新加入该组。在这种情况下，重新加入成员会忘记其以前的状态，但如果其他成员向其发送的消息是针对其崩溃前状态的，这可能会导致包括可能的数据不一致在内的问题。如果这种情况下的一个成员参与了XCom的共识协议，它可能会导致XCom在失败前后做出不同的决定，从而为同一轮共识提供不同的价值观。

为了应对这种可能性，在MySQL 5.7.22和MySQL 8.0中，组复制检查同一服务器的新版本是否试图加入组，而其旧版本（具有相同的地址和端口号）仍列为成员。新的化身被阻止加入该团体，直到旧的化身可以通过重新配置被移除。请注意，如果[`组\复制\成员\驱逐\超时`](group-replication-options.html#sysvar_group_replication_member_expel_timeout)系统变量允许成员在被驱逐之前有额外的时间重新连接到该组，如果在怀疑超时之前重新连接到该组，则被怀疑的成员可以作为其当前化身再次活跃在该组中。当成员超过EXCEL超时并被从组中驱逐时，或当服务器上的组复制被[`停止组复制`](stop-group-replication.html)语句或服务器故障，它必须作为新的化身重新加入。
