zoukankan      html  css  js  c++  java
  • mysql 主从复制不一致,不停库不锁表恢复主从同步

      注意: 进行此操作时,确认在之前已经开启了MySQL的bin-log日志,如果没有则无法实现

      为了安全考虑,我们授权一个用户进行数据备份:

    [root@7con ] mysql -uroot -p
    mysql> grant all on *.* to 'skon'@'192.168.1.1' identified by 'user_passwd';

    备份主库上的数据库数据,注意添加以下选项
    详细参数含义,请参考MySQL官方文档:https://dev.mysql.com/doc/

    [root@7con ] mysqldump -uskon -p --single-transaction --master-data=2 --no-autocommit -A >alldatas.sql

    如果想要备份指定库,需要添加 replicate_wild_do_table选项,为了保持数据的完全一致性,个人不建议只备份指定库。

        1、将从库上的数据库清空,并还原为普通的数据库,(删除master.info relay-log.info relay-bin.index)
        2、重置mysql数据库的master和slave;重置slave时,先停止slave(stop slave;)

    [root@7con ] mysql -uroot -p
    mysql> reset master;
    mysql> show master statusG
    mysql> stop slave;
    mysql> reset slave;
    mysql> show slave statusG

    # 这里可以看到,master和slave已经被重置

     接下来就是导入数据库信息,导入之后重新指向主库:
    注意:重新指向主库的master_log_file和master_log_pos,不是主库show master status;显示的信息,而是从主库上备份的文件里的信息,如下图:

    接下来我们进行操作:(从库上操作)

    还原数据库

    [root@7con ] mysql -uroot -p < alldatas.sql

    重新设置同步

    [root@7con ] mysql -uroot -p
    mysql > change master to
    -> master_host='192.168.1.1',
    -> master_user='Skon',
    -> master_password='Skon123',
    -> master_log_file='binlog.000204',
    -> master_log_pos=547507087;
    mysql > start slave;
    mysql > show slave statusG

    最终的结果如下图:

    可以看到 Slave_IO_Running 和 Slave_SQL_Running 均为yes,说明主从同步已经恢复;
    Seconds_Behind_Master 刚开始的数值会很大,最后会逐渐的减至为0,说明从库正在从主库上写入之前没有同步的数据,直至同步完成。

    作者:Seichung
    来源:CSDN
    原文:https://blog.csdn.net/Scirhh/article/details/86586187
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Spring基于注解的事务控制
    Spring基于配置的事务控制
    Spring基于注解配置AOP
    字符串构造,思维
    DP
    线段树二分
    计算机组成原理
    Graph Attention Networks (GAT) 代码解读
    Python 列表与字典
    2.运算方法和运算器
  • 原文地址:https://www.cnblogs.com/feigao/p/11136629.html
Copyright © 2011-2022 走看看