# 18.7.7.3 自动重新加入

group_replication_autorejoin_tries系统变量,可从 MySQL 8.0.16 获得,使已被驱逐或达到其无法到达的多数超时的成员尝试自动重新加入组。直到 MySQL 8.0.20,系统变量的值默认为 0,所以默认不激活 auto-rejoin。从 MySQL 8.0.21 开始,系统变量的值默认为 3,这意味着成员会自动尝试 3 次重新加入组,每次之间间隔 5 分钟。

如果未激活自动重新加入,则成员在恢复通信后立即接受驱逐,并继续执行指定的操作group_replication_exit_state_action系统变量。在此之后,需要人工干预才能将成员带回组中。如果您可以容忍过时读取的可能性并希望最大限度地减少手动干预的需要,尤其是在瞬态网络问题经常导致成员被驱逐的情况下,使用自动重新加入功能是合适的。

使用自动重新加入,当达到成员的驱逐或无法到达的多数超时时,它会尝试重新加入(使用当前插件选项值),然后继续进行进一步的自动重新加入尝试,直到指定的尝试次数。在尝试自动重新加入失败后,该成员会在下一次尝试前等待 5 分钟。自动重新加入尝试和它们之间的时间称为自动重新加入过程。如果指定的尝试次数用尽而成员没有重新加入或被停止,则成员继续执行由group_replication_exit_state_action系统变量。

在自动重新加入尝试期间和之间,成员保持超级只读模式并显示错误状态在其对复制组的看法。在此期间,成员不接受写入。但是,仍然可以对成员进行读取,随着时间的推移,过时读取的可能性越来越大。如果您确实想在自动重新加入过程中干预以使成员脱机,则可以随时使用手动停止该成员停止 GROUP_REPLICATION声明或关闭服务器。如果您不能容忍任何时间段内出现陈旧读取的可能性,请将group_replication_autorejoin_tries系统变量为 0。

您可以使用性能模式监控自动重新加入过程。在进行自动重新加入过程时,Performance Schema 表events_stages_current显示事件“正在进行自动重新加入过程”,以及在此过程实例中到目前为止已尝试的重试次数(在WORK_COMPLETED场地)。这events_stages_summary_global_by_event_name表显示了服务器实例启动自动重新加入过程的次数(在COUNT_STAR场地)。这events_stages_history_long表显示了每个自动重新加入过程的完成时间(在TIMER_END场地)。当成员重新加入复制组时,其状态可以显示为离线要么错误在组完成兼容性检查并接受它作为成员之前。当成员正在追赶组的交易时,其状态为正在恢复.