【MySQL】Mysql-主从复制不一致,不停库不锁表恢复主从同步

    之前,搭建了MySQL主从同步。但是最近MySQL数据库出现异常,Slave_IO_RunningSlave_SQL_Running 其中一个不为 yes,导致主从数据不一致。但是由于该数据库是提供给大数据使用,时刻都有数据写入,而且在备份的时候不能锁表。所以,在查找了资料之后,得知可以利用主库的 偏移量 进行从库的恢复,从而实现不停主库 不锁表不影响业务的情况下恢复主从架构。


    注意: 进行此操作时,确认在之前已经开启了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 status\G
mysql> stop slave;
mysql> reset slave;
mysql> show slave status\G
# 这里可以看到,master和slave已经被重置

    接下来就是导入数据库信息,导入之后重新指向主库
注意:重新指向主库的master_log_filemaster_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 status\G

    最终的结果如下图:

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


     感谢阅读,本文旨在提供参考,如有错误,欢迎大家指正。帮助编者不断的改进!
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值