的group_replication_autorejoin_tries
system变量,从MySQL 8.0.16可用,使成员被驱逐或达到不可达多数超时尝试自动重新加入组。直到MySQL 8.0.20,系统变量的值默认为0,因此自动重新连接默认不激活。从MySQL 8.0.21开始,系统变量的值默认为3,这意味着成员自动进行3次尝试重新加入组,每次间隔5分钟。
当auto-rejoin未激活时,成员在恢复通信后立即接受其驱逐,并继续执行指定的操作group_replication_exit_state_action
系统变量。在此之后,需要人工干预将成员带回组中。如果您可以容忍过期读取的可能性,并希望尽量减少手工干预的需要,特别是在短暂网络问题经常导致成员被驱逐的情况下,那么使用自动重新连接特性是合适的。
使用auto-rejoin,当成员的驱逐或不可达多数超时到达时,它会尝试重新加入(使用当前插件选项值),然后继续进行进一步的自动重新加入尝试,直到指定的尝试次数。在尝试自动重新加入失败后,成员在下一次尝试前等待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
字段)。