今天一哥们发来求助,说主从不同步了,他发给主从的报错信息,发现从error日志报错(没有截取到show slave status\G的相关信息),但是通过查看日志信息报错如下:
wKioJlLCd2ayVzOnAABZB0BrYwM314.jpg
wKioOVLCd1_hnRLVAAD8CzSb0ns805.jpg
上面的报错信息显示无法读取relay日志,有可能是中继日志损坏~~~根据经验,查看到他的中继文件名中带有localhost,就断定肯定是由于在mysql下在运行的情况下修改了主机名,导致relay日志文件损坏。
他们当前使用的数据库是:Percona-Server-5.5.24-rel26.0-256.Linux.x86_64
这时让我比较惊讶的~~~~呵呵~~~~(目前他公司没有DBA...)
解决办法:
首先,确认下从服务器是否可以停止(呵呵。。这种情况下也不得不停止服务了),让他停止mysqld服务:
注:在停止服务前先查看:show slave status\G,查看下从的同步状态
# /etc/init.d/mysqld stop
然后,找到中继日志的目录,把相关中继日志相关的文件全部删除
其次,启动mysqld服务,reset slave的主从连接信息,再重新连接到主:
# /etc/init.d/mysqld start
# mysql -uroot -p
mysql> reset slave all; #这里要用reset salve all 完全清除之前的同步状态信息
mysql> change master to master_host='10.11.10.25',master_user='repl_user',master_password='XXXX',master_log_file='mysql-bin.000072',master_log_pos=455578221;
mysql> start slave;
mysql> show slave status\G
最后他按照我的给步骤来,最终于看到了两个大大的 Yes.....
根据这哥们公司运维对于出现这个故障的一点总结,对于新手来说很重要,老手都懂的~~~哈哈:
1. binlog 和 relaylog日志文件名要自己定义名字,并写入配置文件!
2. 操作之前得检查...(废话,但是很多人一来直接操作)
3. 运维不规范化(主机名都localhost),应用基础操作没定义好~~
4. ....
©著作权归作者所有:来自51CTO博客作者qzhijun的原创作品,谢绝转载,否则将追究法律责任
mysql主从故障MySQL