本文主要給大家簡單講講使用pt-table-checksum工具對主從數(shù)據(jù)的一致性進(jìn)行校驗,相關(guān)專業(yè)術(shù)語大家可以上網(wǎng)查查或者找一些相關(guān)書籍補充一下,這里就不涉獵了,我們就直奔主題吧,希望使用pt-table-checksum工具對主從數(shù)據(jù)的一致性進(jìn)行校驗這篇文章可以給大家?guī)硪恍嶋H幫助。
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、濰城ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的濰城網(wǎng)站制作公司
背景描述:
因為主從復(fù)制導(dǎo)致主從數(shù)據(jù)不一致,所以使用pt-table-checksum工具來進(jìn)行主從數(shù)據(jù)的一致性校驗,用pt-table-sync工具將差異數(shù)據(jù)補齊,以下是使用工具時的流程、遇到的問題及解決方法,以期最大限度的模擬線上環(huán)境
環(huán)境:
backup為master主機(192.168.32.3),mydb為slave主機(192.168.32.2)
backup為3316端口,mydb為3306端口
binlog_format = ROW
pt-table-checksum 3.0.10 版本(percona-toolkit請自行安裝)
準(zhǔn)備工作:
1、安裝依賴包:
[root@backup ~]#yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL perl-IO-Socket-SSL
2、創(chuàng)建用戶:
創(chuàng)建一個對bakup、mydb主機都有權(quán)限的非root用戶,來進(jìn)行數(shù)據(jù)查看、恢復(fù)操作,目的嘛,為了安全唄,注意:這個用戶一定要相同,相同,相同!為了控制權(quán)限,可以只在各自的主機上授權(quán)
backup主機:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO 'monitor'@'127.0.0.1' IDENTIFIED BY '123456';
mydb主機:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO 'monitor'@'192.168.32.3' IDENTIFIED BY '123456';
工具用法:
[root@backup ~]# pt-table-checksum --help
Usage: pt-table-checksum [OPTIONS] [DSN] 這里注意一下:DSN連接的是主庫的地址,這里指的是backup的地址
工具使用規(guī)則:
1、被檢測的表需要有主鍵(唯一索引),因為這是pt-table-checksum的工作原理
2、從庫的IO、SQL進(jìn)程要為YES狀態(tài),因為從庫要同步主庫的checksum信息
3、執(zhí)行校驗時的DSN為主庫地址
4、校驗時會加S鎖
5、確保主庫、從庫使用相同的賬號
執(zhí)行檢驗(backup主機上執(zhí)行):
[root@backup ~]#pt-table-checksum --nocheck-replication-filters --databases=bailidb h=127.0.0.1,u=monitor,p='123456',P=3316 --replicate-check-only
Checking if all tables can be checksummed ...
Starting checksum ...
Cannot connect to P=3306,h=,p=...,u=monitor
Diffs cannot be detected because no slaves were found. Please read the --recursion-method documentation for information
報錯原因:
主庫連接不到從庫,需要配置從庫
report_host=192.168.32.2
report_port=3306
當(dāng)然了,因為report_host、report_port是read only變量,所以,需要重啟數(shù)據(jù)庫
再次執(zhí)行校驗:
[root@backup ~]# pt-table-checksum --nocheck-replication-filters --databases=bailidb h=127.0.0.1,u=monitor,p='123456',P=3316 --replicate-check-only
Checking if all tables can be checksummed ...
Starting checksum ...
Replica mydb has binlog_format ROW which could cause pt-table-checksum to break replication. Please read "Replicas using row-based replication" in the LIMITATIONS section of the tool's documentation. If you understand the risks, specify --no-check-binlog-format to disable this check
報錯原因:
如果是基于行的復(fù)制環(huán)境(即binlog_format=row),percona官方是不建議使用pt-table-checksum工具來進(jìn)行數(shù)據(jù)的一致性檢查的,但它又提供了一個選項來跳過此檢查,--no-check-binlog-format
再次執(zhí)行校驗:
打印出所有的校驗信息:(可以保存到文件做后期的處理)
[root@backup ~]#pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --databases=bailidb h=127.0.0.1,u=monitor,p='123456',P=3316 > [chayi.txt]
只打印有差異數(shù)據(jù)的校驗信息:
[root@backup ~]#pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --databases=bailidb h=127.0.0.1,u=monitor,p='123456',P=3316 --replicate-check-only > [chayi.txt]
將校驗數(shù)據(jù)寫入到數(shù)據(jù)表中:
[root@backup ~]#pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --replicate=test.checksums --databases=bailidb h=127.0.0.1,u=monitor,p='123456',P=3316 [--recursion-method=hosts/--recursion-method=processlist]
--nocheck-replication-filters 不檢查復(fù)制過濾器,此參數(shù)經(jīng)常和--databases參數(shù)配合使用,對單個庫進(jìn)行校驗
--no-check-binlog-format 不檢查復(fù)制的二進(jìn)制日志文件格式,如果你的binlog_format=row,則要開啟此參數(shù),否則報錯
--replicate=test.checksums 將校驗的信息寫入到test庫的checksums表中,如果這個表沒有的話,會自動創(chuàng)建,且master、slave主機都會有
--databases 指定檢驗的數(shù)據(jù)庫,多個用 "," 隔開
--replicate-check-only 只顯示有不一致數(shù)據(jù)的信息
--recursion-method=hosts 如果使用pt-table-checksum校驗的時候,報錯信息出現(xiàn)"no slaves were found",需要使用此參數(shù)
h 主庫ip
u 主庫、從庫共同的那個用戶名
p 主庫、從庫共同的那個用戶密碼
P 主庫端口號,這里主庫是3316端口
特別注意:
--replicate-check-only、--recursion-method=hosts 此類的參數(shù),使用的時候是有順序的要求的,必須在pt-table-checksum使用的DSN之后!
[root@backup ~]# pt-table-checksum --help
Options and values after processing arguments
校驗結(jié)果介紹:
Checking if all tables can be checksummed ...
Starting checksum ...
TS ERRORS DIFFS ROWS DIFF_ROWS CHUNKS SKIPPED TIME TABLE
06-20T11:58:16 0 0 69 0 1 0 0.298 bailidb.bl_admin
06-20T11:58:18 0 1 13 0 1 0 0.022 bailidb.bl_block
TS:完成檢查的時間
ERRORS:檢查時候發(fā)生錯誤和警告的數(shù)量
DIFFS:最重要的一列,顯示校驗結(jié)果是否一致,0表示一致,1表示不一致
ROWS:表的行數(shù),這里的指的是master主機的
CHUNKS:被劃分到表中的塊的數(shù)目
SKIPPED:由于錯誤或警告或過大,則跳過塊的數(shù)目
TIME:執(zhí)行校驗的時間
TABLE:被校驗的標(biāo)明
使用pt-table-sync工具查看差異數(shù)據(jù)的詳細(xì)信息:
[root@backup ~]#pt-table-sync --replicate=test.checksums h=127.0.0.1,u=monitor,P=3316 --ask-pass h=192.168.32.2,u=monitor,P=3306 --ask-pass --charset=utf8 --print
Enter password for 127.0.0.1:
Enter password for 192.168.32.2:
也可以只查看其中一張表的信息:
[root@backup ~]# pt-table-sync --replicate=test.checksums --tables=bl_major h=127.0.0.1,u=monitor,P=3316 --ask-pass h=192.168.32.2,u=monitor,P=3306 --ask-pass --charset=utf8 --print
Enter password for 127.0.0.1:
Enter password for 192.168.32.2:
注意:
為了最大限度的保障線上數(shù)據(jù)庫的安全性,所以,我們每做一步都要考慮線上的實際應(yīng)用環(huán)境,盡量做到:能不重啟數(shù)據(jù)庫就不重啟,能不明文輸密碼,就不明文,一句話,為了安全,為了安全,為了安全
執(zhí)行差異數(shù)據(jù)同步:
[root@backup ~]#pt-table-sync --replicate=test.checksums h=127.0.0.1,u=monitor,P=3316 --ask-pass h=192.168.32.2,u=monitor,P=3306 --ask-pass --execute
[root@iZ2ze1wy2vjnk07k06p7s5Z ~]# pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --databases=bailitop h=127.0.0.1,u=monitor,P=3316 --ask-pass
Can't locate Term/ReadKey.pm
yum -y install perl-TermReadKey
使用pt-table-checksum工具對主從數(shù)據(jù)的一致性進(jìn)行校驗就先給大家講到這里,對于其它相關(guān)問題大家想要了解的可以持續(xù)關(guān)注我們的行業(yè)資訊。我們的板塊內(nèi)容每天都會捕捉一些行業(yè)新聞及專業(yè)知識分享給大家的。
文章題目:使用pt-table-checksum工具對主從數(shù)據(jù)的一致性進(jìn)行校驗
文章分享:http://aaarwkj.com/article2/peigoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、關(guān)鍵詞優(yōu)化、小程序開發(fā)、搜索引擎優(yōu)化、網(wǎng)站制作、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)