当前位置:Gxlcms > mysql > 恢复SLAVE上的某几张表的简要方法

恢复SLAVE上的某几张表的简要方法

时间:2021-07-01 10:21:17 帮助过:24人阅读

在日常工作中,同步报错是遇到最多的一个问题,如果你修复后发现还没有解决,通常的方法就是在Master上重新dump出一份,然后在sl

在日常工作中,同步报错是遇到最多的一个问题,如果你修复后发现还没有解决,通常的方法就是在Master上重新dump出一份,然后在slave上恢复。这个方法是针对整个库不是很大的情况下使用的,那如果是较大,全部dump再倒入耗时就很长。

那么就要通过特殊的方法恢复某几张表,例如有a1,b1,c1这三张表的数据跟Master上的不一致,操作方法如下:

1、停止Slave复制

mysql>stop slave;

2、在主库上dump这三张表,并记录下同步的binlog和POS点

# mysqldump -uroot -p123456 -q --single-transaction --master-data=2 yourdb a1 b1 c1 > ./a1_b1_c1.sql

3、查看a1_b1_c1.sql文件,找出记录的binlog和POS点

# more a1_b1_c1.sql

例如MASTER_LOG_FILE='mysql-bin.002974', MASTER_LOG_POS=55056952;

4、把a1_b1_c1.sql拷贝到Slave机器上,,并做Change master to指向

mysql>start slave until MASTER_LOG_FILE='mysql-bin.002974', MASTER_LOG_POS=55056952;

直到sql_thread线程为NO,这之间的同步报错一律跳过即可,用命令

stop slave ;set global sql_slave_skip_counter=1;start slave;

注:我来解释下,这步是什么意思。保障其他表的数据不丢失,一直同步,直到同步完那个点结束,a1,b1,c1表的数据在之前的dump已经生成了一分快照,我们只需要导入进入,然后开启同步即可。

5、在Slave机器上导入a1_b1_c1.sql

# mysql -uroot -p123456 yourdb < ./a1_b1_c1.sql

6、导入完毕后,开启同步即可。

mysql>start slave;

这样我们就恢复了3张表,并且同步也修复了。

你可以试试看。

linux

人气教程排行