本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • MySQL
  • 【MySQL故障解决】MySQL主机名更改后导致主从异常问题的解决方法

【MySQL故障解决】MySQL主机名更改后导致主从异常问题的解决方法

发布:TangLu2018-10-9 16:51分类: MySQL 标签: mysql

首先看看正常情况下MySQL主库的配置,指定了log-bin的值:

server-id = 1
log-bin=master-bin
log-bin-index = master-bin.index

如果没有指定log-bin,MySQL会把主机名作为二进制日志和中继日志的文件名,如果后期主机名发生更改会导致日志文件名字也会跟着变动,这样就会导致与master_log_file这项所指定的值不一致导致主从错误。执行show master status命令进行查看时会看到如下错误提示:Last_IO_Error:Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'


解决方法:

stop slave;   #停止同步
reset slave;   #重置slave,这个操作会使用slave的配置丢失,由于binlog文件名改变了,所以要重新配置
change master to
  master_host='192.168.237.128',
  master_port=3306,
  master_user='linuxe',
  master_password='linuxe',
  master_log_file='linuxe-bin.000001',  #从新binlog的第一个binlog文件的第一个位置开始复制
  master_log_pos=4;
start slave;

再看看MySQL从库的配置,正确的配置需要指定relay-log、relay-log-index的值:
server-id = 2
relay-log = relay-log
relay-log-index = relay-log.index


如果是使用正确的配置,从库重启的话主从同步是不受影响的,如果没有指定文件名而修改了主机名,那么服务重启后会出现这样的错误:Last_SQL_Error: Slave failed to initialize relay log info structure from the repository
解决方法:

执行show slave status命令查看当前主从同步的位置信息,一定得记录,不然同步的数据就会不全。所以要记录的内容是Master_Log_File和Read_Master_Log_Pos两行的值,然后进行下面的操作:

stop slave;
reset slave;
change master to
  master_host='192.168.237.128',
  master_port=3306,
  master_user='replication',
  master_password='linuxe',
  master_log_file='linuxe.000002',  #这里就写刚才记录的值
  master_log_pos=32922;
start slave;


最后验证数据

 
温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《【MySQL故障解决】MySQL主机名更改后导致主从异常问题的解决方法
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-451.html  [生成短网址]

已有 0/870 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~