mysql reset slave Last_IO_Error: Got fatal error 1236 from master when reading data from binary log

1、问题背景

mysql一主一从集群,查看从库的状态,同步进程没有在正常工作,表现在 Slave_IO_Running: No、Slave_SQL_Running: No
而且报错了: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’。

判断是主从同步出了问题,此时主库和从库的数据大概率是不同步的

查看主库同步状态

show master status;

在这里插入图片描述

show slave status;

在这里插入图片描述

在这里插入图片描述

Master_Log_File

显示当前I/O线程当前正在读取的主服务器二进制日志文件的名称

Read_Master_Log_Pos

显示当前同步到主服务器上二进制日志的偏移量,I/O线程已经读取的位置,单位是字节。

Relay_Log_File

显示Slave的SQL线程当前正在读取和执行的中继日志文件的名称。

Relay_Log_Pos

显示在当前的中继日志中,Slave的SQL线程已读取和执行的中继日志的偏移量。

Relay_Master_Log_File

显示Slave中继日志同步到Master的二进制日志文件。

2、问题分析

查看从机的relay log文件

在这里插入图片描述

在这里插入图片描述

查看主机的binlog文件

在这里插入图片描述

1.File:当前正在写入的二进制日志文件名。
2.position:当前正在写入的二进制日志文件的位置。
3. Binlog Do DB:指定需要写入二进制日志的数据库名,
4. Binlog lgnore DB:指定不需要写入二进制日志的数据库名。

show slave status\G; 查看得知
Master_Log_File: mysql-bin.000022
Read_Master_Log_Pos: 5914662
Relay_Log_File: localhost-relay-bin.000019
Relay_Log_Pos: 324
Relay_Master_Log_File: mysql-bin.000009

其中 Master_Log_File: mysql-bin.000022 显示当前I/O线程当前正在读取的主服务器二进制日志文件的名称。上面通过查看主机的binlog文件 并没有1个名称为 mysql-bin.000022的文件。所以本篇开头说的报错正好能解释通了::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’。
这个报错意思是从机的I/O线程读取主机的binlog文件时,找不到mysql-bin.000022文件名。

3、解决方法

3.1、锁定主库,手动同步主库数据到从库,使得主从数据库数据一致

参考 链接: mysql主从 添加从库服务器 主库服务器已有数据情况下 的1 、2 章节。

3.1、从机执行stop slave、reset slave

stop slave;
reset slave;

在这里插入图片描述

reset slave会删除从机本地的relay log文件,reset slave之后 ,再次查看从机的relay log文件。发现只剩下3个。这3个通过reset slave删除不了,暂不知道什么原因;通过rm 命令手动删除即可。

在这里插入图片描述

在这里插入图片描述

reset slave之后查看 show slave status \G;

在这里插入图片描述

在这里插入图片描述

3.2、从机上再次指定主机的binlog文件名和偏移量

主机上mysql命令行执行show master status;
查看主机上正在写入的binlog文件名和偏移量
正在写入的binlog文件名是mysql-bin.000113,偏移量是497920。这两个值配置从库时需要用到。

在这里插入图片描述

从机mysql命令行执行

change master to master_host='x.x.x.x',master_port=3306,master_user='root',master_password='yourMysqlPassWord', master_log_file='mysql-bin.000113',master_log_pos=497920;

在这里插入图片描述

3.3、从机执行 start slave

start slave

在这里插入图片描述

3.4、查看从机同步状态

从机上执行

show slave status \G;

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
这2个参数都为yes表明同步状态正常,至此解决了mysq一主一从 同步不正常问题。

在这里插入图片描述

在这里插入图片描述

3.5、恢复主库写操作

unlock tables;

作用是恢复主库的写操作。

4、主从复制测试

4.1、主库插入1条数据

在主库的banji表中插入1条数据。
在这里插入图片描述

show full processlist;

显示主库哪些线程正在运行,返回的结果是实时变化的;
在这里插入图片描述

Master has sent all binlog to slave; waiting for more updates 表明本次同步信息已经发送完毕。

4.2、 从库确认是否同步了这条数据

查看从库的banji表中是否同步了主库插入的那条数据。

在这里插入图片描述

show full processlist;

显示从库哪些线程正在运行,返回的结果是实时变化的;

在这里插入图片描述

Slave has read all relay log; waiting for more updates 表明本次同步信息已经接收完毕。

  • 20
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值