percona-toolkit-2.2.8-1.noarch.rpm有兩個(gè)工具可以驗(yàn)證MySQL主從數(shù)據(jù)的一致性
安裝tookkit需要一些依賴包
-
yum install perl perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Time-HiRes -y
實(shí)驗(yàn)環(huán)境
在Master上初始化實(shí)驗(yàn)數(shù)據(jù)
-
create database mvbox;
-
use mvbox;
-
create table test(idint primary key,namevarchar(20));
-
insert into testvalues(1,'a'),(2,'b'),(3,'c'),(4,'d');
因?yàn)橹鲝沫h(huán)境已經(jīng)搭建,這些數(shù)據(jù)會(huì)自動(dòng)同步到Slave上。
在Slave從庫(kù)添加一個(gè)數(shù)據(jù),模擬主從數(shù)據(jù)不一致的場(chǎng)景。
-
insert into testvalues(5,'e');
在Master主庫(kù)執(zhí)行pt-table-checksum命令。
它會(huì)使用concat_ws函數(shù)將數(shù)據(jù)合并為一行,然后使用crc32函數(shù)生成校驗(yàn)碼,最后將其插入percona庫(kù)的checksums表中。
因?yàn)橹鲝沫h(huán)境,這個(gè)數(shù)據(jù)會(huì)復(fù)制到Slave
也就是說(shuō)Slave的percona.checksums表,存放的是主庫(kù)數(shù)據(jù)的校驗(yàn)碼。
所以在Slave對(duì)數(shù)據(jù)執(zhí)行同樣的校驗(yàn),然后比對(duì)checksums表中的數(shù)據(jù),就可以驗(yàn)證主從是否一致。
所以執(zhí)行pt-table-checksum命令的帳號(hào),至少需要有全庫(kù)的只讀權(quán)限和percona庫(kù)的讀寫(xiě)權(quán)限。
-
create user xx;
-
GRANTSELECT, PROCESS, SUPER, REPLICATION SLAVE ON*.* TO'xx'@'%' IDENTIFIED BY'xx';
-
grant all privileges on percona.* TO'xx'@'%' IDENTIFIED BY'xx';
查看主從一致的情況
-
TS :完成檢查的時(shí)間。
-
ERRORS :檢查時(shí)候發(fā)生錯(cuò)誤和警告的數(shù)量。
-
DIFFS :0表示一致,1表示不一致。當(dāng)指定--no-replicate-check時(shí),會(huì)一直為0,當(dāng)指定--replicate-check-only會(huì)顯示不同的信息。
-
ROWS :表的行數(shù)。
-
CHUNKS :被劃分到表中的塊的數(shù)目。
-
SKIPPED :由于錯(cuò)誤或警告或過(guò)大,則跳過(guò)塊的數(shù)目。
-
TIME :執(zhí)行的時(shí)間。
-
TABLE :被檢查的表名。
常用參數(shù)
-
--nocheck-replication-filters :不檢查復(fù)制過(guò)濾器,建議啟用。后面可以用--databases來(lái)指定需要檢查的數(shù)據(jù)庫(kù)。
-
--no-check-binlog-format : 不檢查復(fù)制的binlog模式,要是binlog模式是ROW,則會(huì)報(bào)錯(cuò)。
-
--replicate-check-only :只顯示不同步的信息。
-
--replicate= :把checksum的信息寫(xiě)入到指定表中,建議直接寫(xiě)到被檢查的數(shù)據(jù)庫(kù)當(dāng)中。
-
--databases= :指定需要被檢查的數(shù)據(jù)庫(kù),多個(gè)則用逗號(hào)隔開(kāi)。
-
--tables= :指定需要被檢查的表,多個(gè)用逗號(hào)隔開(kāi)
-
h=127.0.0.1 :Master的地址
-
u=root :用戶名
-
p=123456:密碼
-
P=3306 :端口
可以看到這個(gè)工具已經(jīng)檢測(cè)到了主從不一致的情況。
如果發(fā)生不一致,可以使用pt-table-sync命令修復(fù)。
需要注意的是這個(gè)命令需要在Slave從庫(kù)執(zhí)行。
使用print參數(shù),他會(huì)在屏幕顯示修復(fù)的SQL語(yǔ)句。然后可以手工確認(rèn)并執(zhí)行。
也可以通過(guò)這個(gè)命令自動(dòng)執(zhí)行,不過(guò)這樣會(huì)修改從庫(kù)的數(shù)據(jù),感覺(jué)不是太安全。
需要特別注意的是這兩個(gè)命令執(zhí)行的過(guò)程中,會(huì)對(duì)表上共享鎖,所以生產(chǎn)環(huán)境要慎重選擇執(zhí)行時(shí)間。
參考:
http://nettedfish.sinaapp.com/blog/2013/06/04/check-replication-consistency-by-pt-table-checksum/
http://www.cnblogs.com/zhoujinyi/archive/2013/05/09/3067045.html
http://blog.chinaunix.net/uid-16844903-id-3360228.html
文章題目:驗(yàn)證MySQL主從一致性(pt-table-checksum&pt-table-sync)
當(dāng)前地址:http://aaarwkj.com/article44/goopee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、動(dòng)態(tài)網(wǎng)站、面包屑導(dǎo)航、虛擬主機(jī)、標(biāo)簽優(yōu)化、網(wǎng)站維護(hù)
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源:
創(chuàng)新互聯(lián)