恢復MySQL slave上的某幾張表的方法

  • 2019 年 10 月 5 日
  • 筆記

恢復slave上的某幾張表的方法

摘錄自《MySQL管理之道》Page126

有時候,slave上只是幾張表有些問題,如果從master上dump一份進行恢復的話,對於體積很大的資料庫,則要花費很長的時間,長時間的持鎖還容易影響到業務。

下面介紹一種方法,恢復test_DB下的3張表tb1、tb2、tb3,操作如下:

1、在slave上先停止複製

> stop slave;

2、在主庫上導出3張需要恢復的表,並記錄下同步的binlog和POS點。

# mysqldump -uroot -proot -q --single-trasaction --master-data=2 test_DB tb1 tb2 tb3 > /root/tb123.sql

3、查看/root/tb123.sql 找到記錄的binlog和POS點

# more /root/tb123.sql 例如 「master_LOG_FILE='mnysql-bin.000010',master_LOG_POS=10020;」

4、做change master to操作:

> start slave until master_LOG_FILE='mysql-bin.000010',master_LOG_POS=10020;  直到sql_thread執行緒為NO,這期間的同步報錯一律跳過即可,可以用如下命令跳過:  > stop slave; set global slave_skip_counter=1; start slave;

5、把/root/tb123.sql複製到slave機器上,並在slave機器上導入/root/tb123.sql

# mysql -uroot -proot test_DB < /root/tb123.sql

6、導入完畢,即可開啟slave同步。

> start slave;

操作完成,在slave上執行show slave statusG查看即可。