这篇文章主要记录一次服务器异常关机导致的,MySQL主从不同步的异常情况处理。
因机房进行搬迁,机房人员在未通过系统关机的情况下,强行断电关机,导致数据库主从出现不同步的情况,并出现数据不同步的情况。
** 对于不同步的处理方式:**
Mysql主从不同步主要在从机上执行show slave status\G主要查看以下两个参数
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
两个参数必须都是yes才为同步成功。接下来分析下那个参数为no的情况
1、Slave_IO_Running: NO的情况分析
1)首先检查主从的server_id、server_uuid是否重复,具体是主从机器上都执行以下命令
show variables like 'server_id';
show variables like 'server_uuid';
如果server_id一样就修改my.cnf文件重新配置server_id,修改后重启mysql服务。
如果server_uuid一样就修改mysql data 目录下auto.cnf 文件中uuid的值,使两台mysql不同即可,修改后重启mysql服务。
2)如果是自己搭建虚拟机环境克隆主机小心server_uuid会是一样的。
接着检查主机的网络是否通畅。具体可以使用ping ip;测试通信。
3)查看master_log_file,master_log_pos两个参数是否和slave同步。
如果不同步了就重新执行下
stop slave;
change master to master_host='172.16.1.101',master_log_file='mysql-bin.000001',master_log_pos=120;
start slave;
以上情况都不是就查看slave机器的日志文件。
2、Slave_SQL_Running: No
解决:首先登录从机mysql –uroot -h 127.0.0.1执行以下命令
stop slave;
set global sql_slave_skip_counter =1;
start slave;
注:如果错误过多,可以在my.cnf中添加slave-skip-errors=all
3、2个参数都为NO
检查连接的mysql主机是否正常连接。
3、ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
做从机的时候relay_log地址配有配置。
对于数据不同步的情况,因只有一个库文件存在不同步的情况,并且该库不太常用,我的处理办法比较极端,直接将从库数据文件删除,从主库重新复制到从库。
本文转自 Bill_Xing 51CTO博客,原文链接http://blog.51cto.com/zhanx/2044882: