恢復SLAVE上的某幾張表的簡要方法 start slave until


核心提示: 同步報錯是遇到最多的一個問題,如果你修復后發現還沒有解決,恢復SLAVE上的某幾張表的簡要方法,通常的方法就是在Master上重新dump出一份,然后在slave上恢復,開啟同步即可,mysql>start slave;這樣我們就恢復了3張表,這個方法是針對整個庫不是很大的情況下使用的,那如果是較大

 

同步報錯是遇到最多的一個問題,如果你修復后發現還沒有解決,通常的方法就是在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張表,並且同步也修復了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM