Error number: MY-010581; Symbol: ER_RPL_SLAVE_SQL_THREAD_STARTING; SQLSTATE: HY000
Message: Slave SQL thread%s initialized, starting replication in log ‘%s’ at position %s, relay log ‘%s’ position: %s
MySQL 错误 MY-010581(ER_RPL_SLAVE_SQL_THREAD_STARTING)闪出的错误,表示”slave SQL线程启动”。
错误说明
这个错误表明在slave SQL线程启动过程中发生了错误,最常见的情况就是slave SQL 不能正确地获取master当前位置,或者其他一些抢断条件出现问题,或者I/O线程崩溃造成的丢失master binlog。
常见案例
在slvae服务器上,出现这个错误的案例通常有:
1. slave的保存的主服务器的binlog位置不正确导致的,或是在slave上使用skip-slave-start参数,主服务器有新的binlog,而slave未更新,导致master binlog文件和位置不符合的情况发生;
2. slave的一些监听端口服务挂掉,并因此失去连接,让slave无法超时更新master binlog位置;
3. slave服务器出现了崩溃,导致连接无法记录下来,这将导致更新master binlog时无法正确地拿到master当前位置;
4. master服务器有新的binlog,而slave上的master binlog位置还没有更新,因此master 和 slave拿到的日志位置就有不一致的情况,就会造成该错误。
解决方法
解决 MY-010581 (ER_RPL_SLAVE_SQL_THREAD_STARTING)错误的方法一般有以下几种:
1. 如果slave服务器崩溃,可以检查master服务器上的binlog文件,确定master当前位置,并在slave上设置该位置;
2. 如果master服务器有更新,而slave上的binlog位置还没有更新,可以尝试重启slave,或者在slave上使用reset master来重置master binlog位置;
3. 检查slave服务器的监听端口,确定哪个端口挂掉,尝试重启该服务,或者配置一下保护端口;
4. 使用“CHANGE MASTER TO”更新slave的master binlog位置表信息;
5. 检查并确认slave上并没有被直接改动master binlog位置。