MySQL 8.0.16 中提供的
group_replication_autorejoin_tries
系统变量使已被驱逐或达到其无法达到的多数超时的成员尝试自动重新加入组。直到 MySQL 8.0.20,系统变量的值默认为 0,因此默认不激活自动重新加入。从 MySQL 8.0.21 开始,系统变量的值默认为 3,这意味着成员会自动进行 3 次重新加入组的尝试,每次间隔 5 分钟。
当未激活自动重新加入时,成员在恢复通信后立即接受其被驱逐,并继续执行
group_replication_exit_state_action
系统变量指定的操作。在此之后,需要手动干预才能将成员带回组中。如果您可以容忍过时读取的可能性并且希望尽量减少手动干预的需要,那么使用自动重新加入功能是合适的,尤其是在瞬态网络问题经常导致成员被驱逐的情况下。
使用自动重新加入,当达到成员的驱逐或无法到达的多数超时时,它会尝试重新加入(使用当前插件选项值),然后继续进行进一步的自动重新加入尝试,直到指定的尝试次数。自动重新加入尝试失败后,成员将等待 5 分钟才能进行下一次尝试。自动重新加入尝试和它们之间的时间称为自动重新加入过程。如果在没有成员重新加入或停止的情况下用完了指定的尝试次数,则成员继续执行
group_replication_exit_state_action
系统变量指定的操作。
在自动重新加入尝试期间和之间,成员保持超级只读模式并ERROR
在其复制组视图中显示状态。在此期间,成员不接受写入。但是,仍然可以在成员上进行读取,随着时间的推移,过时读取的可能性会增加。如果您确实想在自动重新加入过程中进行干预以使成员脱机,则可以随时通过使用
STOP GROUP_REPLICATION
语句或关闭服务器来手动停止该成员。如果您不能容忍任何时间段内出现过时读取的可能性,请将
group_replication_autorejoin_tries
系统变量设置为 0。
您可以使用性能模式监视自动重新加入过程。在执行自动重新加入过程时,性能模式表
events_stages_current
显示事件“正在进行自动重新加入过程”WORK_COMPLETED
,以及在此过程实例期间(在字段中)到目前为止已尝试的重试次数
。该
events_stages_summary_global_by_event_name
表显示服务器实例启动自动重新加入过程的次数(在
COUNT_STAR
字段中)。该
events_stages_history_long
表显示了每个自动重新加入程序完成的时间(在TIMER_END
场地)。当成员重新加入复制组时,其状态可以在组完成兼容性检查并接受它作为成员时OFFLINE
或
之前显示。ERROR
当该成员正在追赶群的交易时,其状态为
RECOVERING
。