MySQL主从不同步的处理方式 | 张扎瓦的博客

MySQL主从不同步的处理方式

MySQL主从不同步的恢复步骤


查看MySQL从库同步状态

使用mysql命令行客户端,连接到从库MySQL,执行

1
show slave status\G;

如果如下图所示,表示未同步,需要手动执行同步操作

image-20200908165904468

下面介绍两种同步操作方式

方法1

方法1适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况

  1. 使用命令行连接到MySQL

    1
    mysql -uroot -p
  2. 先停止MySQL主从同步

    1
    stop slave;
  3. 设置跳过复制错误

    1
    set global sql_slave_skip_counter =1;
  4. 开启主从同步

    1
    start slave;

具体流程如下图所示:

image-20200908171359619

方法2

方法2适用于主从库数据相差较大,或者要求数据完全统一的情况

  1. 使用命令行连接主库,设置主库为只读状态,防止写入

    1
    flush tables with read lock;
  2. 退出mysql命令行客户端

    1
    exit;
  3. 备份主库的数据

    1
    mysqldump -uroot -p --databases sas_hkdl > mysql.bak.sql
  4. 连接mysql命令行客户端,查看主库状态,并记录下FilePosition 参数的值,等下同步的时候需要用

    1
    show master status;

    image-20200908172837321

  5. 使用scp命令,将备份的sql文件拷贝到从库服务

    1
    scp mysql.bak.sql root@需要服务器ip地址:/tmp
  6. 连接从库的MySQL,停止数据库同步

    1
    stop slave;
  7. 导入备份的sql文件到从库中

    1
    source /tmp/mysql.bak.sql
  8. 重新设置主从同步

    1
    change master to master_host = '10.71.55.82', master_user = 'tongbu', master_port=3306, master_password='123456', master_log_file = 'mysqld-bin.000017', master_log_pos=1004224;

    注意:这里的master_log_filemaster_log_pos为主库 show master status 命令的 FilePosition值。

  9. 开启主从同步

    1
    start slave;
  10. 查看同步状态

    1
    show slave status\G;
  11. 连接主库的MySQL,关闭只读锁

    1
    unlock tables;
如果我的文章对您有所帮助,不妨打赏一杯豆浆以资鼓励(○` 3′○)