MySQL pt-slave-restart工具的使用簡介
在MySQL主從復(fù)制環(huán)境的搭建中,常常會遇到一種場景,主庫和從庫都要初始化用戶的賬號密碼,正常的情況下,需要在主庫和從庫都關(guān)閉session級別的binlog,然后再進(jìn)行用戶信息導(dǎo)入。
但是有時候會忽略關(guān)閉session級別binlog這個前置動作,例如在基于GTID的復(fù)制模式下,主從庫都直接導(dǎo)入了用戶的賬號密碼信息,主庫和從庫都將賬號密碼的事務(wù)記錄到了自己的GTID中,此時我們?nèi)绻肎TID的方式搭建復(fù)制,會出現(xiàn)報錯,因為從庫已經(jīng)有賬號了,所以主庫上同步到從庫的用戶信息會出現(xiàn)報錯現(xiàn)象,提示用戶已經(jīng)存在,這種情況下,我們需要在從庫跳過從主庫復(fù)制過來的創(chuàng)建用戶的SQL語句。
在GTID模式下,通過下面的辦法可以跳過一個事務(wù):
stop slave; set gtid_next=xxxxx; begin; commit; set gtid_next=automatic; start slave;
但是在事務(wù)數(shù)很多的情況下,我們不能一個一個跳過,需要批量跳過同一個錯誤,這里有幾種方式可以進(jìn)行處理;
MySQL復(fù)制問題的三個參數(shù)介紹
分別是調(diào)整slave_skip_errors參數(shù)或者slave_exec_mode參數(shù)
今天我們來看另外一種方法,就是利用pt-slave-restart工具來進(jìn)行事務(wù)跳過,命令如下:
./pt-slave-restart -uroot -proot123 --error-numbers=1062
命令很容易理解,寫清楚錯誤編碼,直接跳過就行,它會打印出來很多信息,默認(rèn)情況下打印內(nèi)容為:時間戳、連接信息、中繼日志文件、中繼日志位置以及上一個錯誤號。例如:
2020-09-22T00:59:09P=3306,h=192.168.7.194,p=...,u=rootrelay-bin.0000053691032
2020-09-22T00:59:09P=3306,h=192.168.7.194,p=...,u=rootrelay-bin.0000057261032
2020-09-22T00:59:09P=3306,h=192.168.7.194,p=...,u=rootrelay-bin.00000510851032
2020-09-22T00:59:09P=3306,h=192.168.7.194,p=...,u=rootrelay-bin.00000514441032
2020-09-22T00:59:09P=3306,h=192.168.7.194,p=...,u=rootrelay-bin.00000518001032
你可以使用--verbose選項添加更多信息,也可以使用--quiet選項阻止所有輸出。
注意事項:
當(dāng)采用多線程復(fù)制(slave_parallel_workers > 0)時,pt-slave-restart不能跳過事務(wù)。pt-slave-restart不能確定GTID事件是哪個特定slave線程執(zhí)行失敗的事務(wù)。
如果需要使用,請暫時關(guān)閉多線程復(fù)制的workers
關(guān)于pt-slave-restart的其他參數(shù),可以使用pt-slave-restart --help的命令查看,也可以參考下面的常見參數(shù)列表:
--always:永不停止slave線程,手工停止也不行 --ask-pass:替換-p命令,防止密碼輸入被身后的開發(fā)窺屏 --error-numbers :指定跳過哪些錯誤,可用,進(jìn)行分隔 --error-text :根據(jù)錯誤信息進(jìn)行匹配跳過 --log :輸出到文件 --recurse :在主端執(zhí)行,監(jiān)控從端 --runtime :工具執(zhí)行多長時間后退出:默認(rèn)秒,m=minute,h=hours,d=days --slave-user --slave-password :從庫的賬號密碼,從主端運行時使用 --skip-count :一次跳過錯誤的個數(shù),膽大的可以設(shè)置大些,不指定默認(rèn)1個 --master-uuid:級聯(lián)復(fù)制的時候,指定跳過上級或者上上級事務(wù)的錯誤 --until-master :到達(dá)指定的master_log_pos,file位置后停止,格式:”file:pos“ --until-relay :和上面一樣,但是根據(jù)relay_log的位置來停止
以上就是MySQL pt-slave-restart工具的使用簡介的詳細(xì)內(nèi)容,更多關(guān)于MySQL pt-slave-restart工具的使用的資料請關(guān)注本站其它相關(guān)文章!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。