Error number: MY-013374; Symbol: ER_GRP_RPL_TIMEOUT_RECEIVED_VC_ON_REJOIN; SQLSTATE: HY000
Message: Timeout while waiting for a view change event during the auto-rejoin procedure
错误说明
MY-013374(ER_GRP_RPL_TIMEOUT_RECEIVED_VC_ON_REJOIN)是MySQL中的一个错误,这个错误表示 group replication 无法传输View Change信息。具体的来说,当MySQL的集群尝试加入或重建时,它会认为这是一个超时,这是不正确的,因此它就会报出这个错误。
常见案例
Group replication 用于在MySQL服务器的多个实例之间实现高可用性和故障转移(在 master 服务器实例故障后会自动将其切换到另一台服务器实例)。每次服务器尝试加入现有群集,或现有节点尝试重新加入时,都会产生这种情况,并可能导致 MY-013374(ER_GRP_RPL_TIMEOUT_RECEIVED_VC_ON_REJOIN)错误发生。
解决方法
一般情况下,使用 group_replication_recovery设置选项,强制加入集群并手动触发复原操作来解决此错误。
1.在尝试重新加入群集的节点上,确保使用以下命令设置 group_replication_recovery 选项:
SET GLOBAL group_replication_recovery= ON;
2.然后,使用以下命令来重新加入群集:
START GROUP_REPLICATION;
3.最后,使用以下命令触发复原操作:
START GROUP_REPLICATION RECOVERY;
而在某些更复杂的情况下,比如尝试重新加入群集的节点失去连接或长时间停止,那么还需要重置群集:
1.停止所有的 Group replication 节点:
STOP GROUP_REPLICATION
2.重置配置:
RESET MASTER;
3.重新启动所有 Group replication 节点:
START GROUP_REPLICATION;
4.最后,在尝试重新加入的节点上触发复原操作:
START GROUP_REPLICATION RECOVERY;
另外,也可以考虑重新配置 Group replication 节点以减少发生此错误的可能性。以此来减少节点加入群集和重建群集时超时发生的可能性。 重新配置主要包括:
1.修改 group_replication_start_on_boot 值,默认情况下为OFF:
SET GLOBAL group_replication_start_on_boot = OFF;
2.调整 group replication 频道/组配置,如 group_replication_group_name 和 group_replication_local_address 等;
3.调整相应的超时参数,比如 group_replication_communication_max_message_size,group_replication_member_expel_timeout,group_replication_consistency,group_replication_flow_control_mode 等;
4.检查使用的网络设置,以确保在不同的节点之间可以无缝连接。
如果还没有解决问题,可以尝试将 MySQL 节点升级到最新版本,以便从新特性中获益。
总之,排除 MY-013374(ER_GRP_RPL_TIMEOUT_RECEIVED_VC_ON_REJOIN)错误,通常需要重新配置 Group replication 选项,重置和重新加入群集,并触发复原操作,以及检查网络设置。 如果仍然无法解决此问题,则可以考虑将 MySQL 节点升级到最新版本。