恢復slave上的某幾張表的方法mysql
摘錄自《MySQL管理之道》Page126sql
有時候,slave上只是幾張表有些問題,若是從master上dump一份進行恢復的話,對於體積很大的數據庫,則要花費很長的時間,長時間的持鎖還容易影響到業務。數據庫
下面介紹一種方法,恢復test_DB下的3張表tb一、tb二、tb3,操做以下:bash
一、在slave上先中止複製ide
> stop slave;
二、在主庫上導出3張須要恢復的表,並記錄下同步的binlog和POS點。spa
# mysqldump -uroot -proot -q --single-trasaction --master-data=2 test_DB tb1 tb2 tb3 > /root/tb123.sql
三、查看/root/tb123.sql 找到記錄的binlog和POS點線程
# more /root/tb123.sql 例如 「master_LOG_FILE='mnysql-bin.000010',master_LOG_POS=10020;」
四、作change master to操做:ip
> 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;
五、把/root/tb123.sql複製到slave機器上,並在slave機器上導入/root/tb123.sql同步
# mysql -uroot -proot test_DB < /root/tb123.sql
六、導入完畢,便可開啓slave同步。it
> start slave;
操做完成,在slave上執行show slave status\G查看便可。