MySQL主从复制报错Failed to flush master info
有个同事找我帮忙,说MySQL主从复制报错,“Fatal error: Failed to flush master info.”,如下:
告警日志:
看报错内容,是说文件“/var/lib/mysql/master.info”不能写入,所以,我让他检查一下该文件的权限、是否存在等,结果都正常。
我简单百度和Google了一下,结果没有发现这个错误。于是,我远程向日葵过去查看,发现IO线程挂掉了,但是SQL线程是正常的,没见过这个报错,很奇怪,先尝试启动一下:
1 2 | start slave; show slave status \G |
结果惊讶的发现,报错信息变了:
1 | [ERROR] Slave I/O: error connecting to master 'repl@192.168.XX.XX:3306' retry-time: 60 retries: 86400, Error_code: 2003 |
这个报错就很明显了,大家都熟悉,意思是不能连接到主库,先用MySQL登录一下:
1 | mysql -u repl -h 192.168.XX.XX -p xxx |
结果可以登陆,说明主库正常。
那就怀疑是主库修改过密码,所以在从库更新一下配置信息即可:
1 2 3 | stop slave; change master to master_password='XXX'; start slave; |
问题解决。
另外,在MySQL 5.7的主从复制里,建议增加如下参数:
1 2 | master_info_repository='table' relay_log_info_repository='table' |