背景:

线上宕机,导致数据不一致,当时为了快速恢复业务,仅使用主库,现在需要恢复,因为主从数据相差比较大,所以对从库重新进行同步。(如果是很少的同步不一致,比如一条,可以直接跳过本次同步,不需要重新同步,可自行查找跳过命令)

1、首先重置从库的同步设置、并清除从库不一致数据

(1)#停止slave

stop slave;

#重置slave,会重置从库相关设置。

reset slave all;

(2)#清除已同步数据库

drop database `***`;

2、重置主库同步设置,锁定主库,备份主库

(1)多次查看主库状态

gtid主从不一致 mysql mysql主从数据不一致怎么办_mysql

发现每次position位置都不同,说明主库数据一直在变,现在不能备份,需要在晚上人少的时候锁库备份。

(2)#重置主库同步设置

RESET MASTER;

(3)#锁定主库,只能读

FLUSH TABLES WITH READ LOCK;

(4)#查看锁定状态下主库的binlog和位置

gtid主从不一致 mysql mysql主从数据不一致怎么办_数据库_02

重置后和锁库后的binlog的位置可能有变化,取锁库后的就行。

(5)备份数据,在linux命令行执行,不要在数据库内执行。

        mysqldump –h(ip***) –P(port***) –u(user***) –p(pwd***) --all-databases > /master-dump.sql

(6)查看备份文件,解锁主库

gtid主从不一致 mysql mysql主从数据不一致怎么办_gtid主从不一致 mysql_03

#解锁主库

UNLOCK TABLES;

3、从库数据恢复,修改从库同步设置,启动从库

从库可选数据恢复方式

gtid主从不一致 mysql mysql主从数据不一致怎么办_mysql_04

(1)因为直接对线上库操作,所以用的保守方法:先把备份sql传到从库,进入从库mysql,再使用 source / master-dump.sql ,如果数据量较大,执行需要一段时间

gtid主从不一致 mysql mysql主从数据不一致怎么办_linux_05

下边是执行完毕后可以查看同步过来的数据库信息

gtid主从不一致 mysql mysql主从数据不一致怎么办_数据库_06

 (2)修改从库同步设置,因为重置设置,所以用户名端口要再设置,赋值后查看:

gtid主从不一致 mysql mysql主从数据不一致怎么办_linux_07

 

gtid主从不一致 mysql mysql主从数据不一致怎么办_mysql_08

(3)打开从库同步,两个yes,代表成功,可以自己验证了

gtid主从不一致 mysql mysql主从数据不一致怎么办_mysql_08

  1. 参考

如何重置(重新同步)MySQL主从复制

MySql数据库备份与恢复——使用mysqldump 导入与导出方法总结