• mysql reset slave reset master


    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;
    
    • 1

    在这里插入图片描述

    show slave status;
    
    • 1

    在这里插入图片描述

    在这里插入图片描述

    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;
    
    • 1
    • 2

    在这里插入图片描述

    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;
    
    • 1

    在这里插入图片描述

    3.3、从机执行 start slave

    start slave
    
    • 1

    在这里插入图片描述

    3.4、查看从机同步状态

    从机上执行

    show slave status \G;
    
    • 1

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

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    单视觉L2市场「鲶鱼」来了,掀起数据反哺高阶新打法
    LeetCode·583.两个字符串的删除操作·动态规划
    常用正在表达式
    Django-ORM-1:orm的字段和参数
    Mysql面试(事务)
    04条件构造器和常用接口
    vue中的深拷贝lodash的用法及解释
    计算机毕业设计ssm飞机售票管理系统63z52系统+程序+源码+lw+远程部署
    FastJson反序列化漏洞(复现)
    推荐系统实践读书笔记-06利用社交网络数据
  • 原文地址:https://blog.csdn.net/OceanWaves1993/article/details/138201480