评论

收藏

[MySQL] 【MySQL运维】解决由于中继日志报错导致主从故障一例

数据库 数据库 发布于:2021-07-04 10:45 | 阅读数:512 | 评论:0

  

  今天一哥们发来求助,说主从不同步了,他发给主从的报错信息,发现从error日志报错(没有截取到show slave status\G的相关信息),但是通过查看日志信息报错如下:
DSC0000.jpg

DSC0001.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. ....
  

  

  


  
关注下面的标签,发现更多相似文章