Home > Database > Mysql Tutorial > body text

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

WBOY
Release: 2016-06-07 17:18:03
Original
785 people have browsed it

在日常工作中,同步报错是遇到最多的一个问题,如果你修复后发现还没有解决,通常的方法就是在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

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

mysql>start slave;

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

你可以试试看。

linux

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template