恢復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查看即可。