可以配置 Group Replication 的分布式恢复过程的几个方面以适合您的系统。
对于二进制日志的状态传输,Group Replication 限制了加入成员在尝试连接到捐赠者池中的捐赠者时所做的尝试次数。如果在没有成功连接的情况下达到连接重试限制,则分布式恢复过程会因错误而终止。请注意,此限制指定加入成员尝试连接到捐助者的总次数。例如,如果 2 个组成员是合适的捐赠者,并且连接重试限制设置为 4,则加入成员会在达到限制之前尝试连接到每个捐赠者 2 次。
默认连接重试限制为 10。您可以使用
group_replication_recovery_retry_count
系统变量配置此设置。以下命令将连接到捐赠者的最大尝试次数设置为 5:
mysql> SET GLOBAL group_replication_recovery_retry_count= 5;
对于远程克隆操作,此限制不适用。在开始尝试从二进制日志传输状态之前,Group Replication 仅对每个合适的捐赠者进行一次连接尝试以进行克隆。
对于二进制日志的状态传输,
group_replication_recovery_reconnect_interval
系统变量定义分布式恢复进程在施主连接尝试之间应该休眠的时间。请注意,分布式恢复不会在每次捐赠者连接尝试后休眠。由于加入的成员正在连接到不同的服务器而不是重复连接到同一台服务器,因此可以假设影响服务器 A 的问题不会影响服务器 B。因此,分布式恢复仅在它经过所有可能的捐赠者时才会暂停。一旦加入该组的服务器尝试连接到该组中的每个合适的捐赠者,分布式恢复进程就会休眠由
group_replication_recovery_reconnect_interval
系统变量。例如,如果 2 个组成员是合适的捐赠者,并且连接重试限制设置为 4,则加入成员尝试连接到每个捐赠者,然后在连接重试间隔内休眠,然后再尝试连接在达到限制之前给每个捐助者。
默认连接重试间隔为 60 秒,您可以动态更改此值。以下命令将分布式恢复捐赠者连接重试间隔设置为 120 秒:
mysql> SET GLOBAL group_replication_recovery_reconnect_interval= 120;
对于远程克隆操作,此时间间隔不适用。在开始尝试从二进制日志传输状态之前,Group Replication 仅对每个合适的捐赠者进行一次连接尝试以进行克隆。
当分布式恢复成功完成从捐赠者到加入成员的状态转移时,加入成员可以在组中标记为在线并准备好参与。默认情况下,这是在加入成员收到并应用它丢失的所有交易后完成的。或者,您可以允许加入成员在收到并验证(即完成冲突检测)它丢失的所有事务但在应用它们之前将其标记为在线。如果要执行此操作,请使用
group_replication_recovery_complete_at
系统变量来指定替代设置
TRANSACTIONS_CERTIFIED
。