Error number: MY-013688; Symbol: ER_RPL_ASYNC_READ_FAILOVER_TABLE; SQLSTATE: HY000
Message: Error reading failover sources for channel ‘%s’ from replication_asynchronous_connection_failover table.
MySQL 错误 MY-013688,符号 ER_RPL_ASYNC_READ_FAILOVER_TABLE,SQLSTATE HY000 表示复制失败可能源自于故障转移表没有由复制线程读取,复制不能将主库设置为主库状态。此错误码已于MySQL 8.0.16及更高版本引入。
错误说明
MY-013688 符号 ER_RPL_ASYNC_READ_FAILOVER_TABLE,SQLSTATE HY000,表示复制的故障转移表当前未被复制线程读取,因此复制无法设置主库为主库状态。由于复制线程无法将主服务器状态更改为主服务器状态,因此故障转移表上的信息可能与当前复制状态不同,这可能导致复制失败。
常见案例
此错误码通常会发生在下列场景中:
1.主库发生宕机并恢复上线后,在从端较长时间内未能恢复复制
2.从库实例发生宕机,在恢复后,无法重新连接主库,或尝试重新连接时发生错误
3.多个从库上的复制存在间歇性的停止
解决方法
为了解决此MySQL错误MY-013688,我们可以推荐以下解决方法:
1.检查从库的连接,确保其正常可用。同时应检查错误日志以了解原因并尝试解决连接问题。
2.在从库上,关闭核心复制,执行 RESET SLAVE 命令,然后再重新启动复制。
3.在主库上,通过 SET GLOBAL rpl_async_read_failover_table=0 关闭该特性,或者确认 rpl_async_read_failover_table 处于默认 1 的状态。
4.通过使用 CHANGE MASTER TO 来定义主从的复制状态。
并发症的预防方法是检查日志文件,以检查可能导致此错误发生的问题,并补充更多的日志记录,以便尽早发现问题。此外,使用备份以避免宕机之后数据的丢失也是一个经典的准则和做法。