mk-table-checksum檢查主從表是否一緻及有效的工具
<a href="http://tech.it168.com/a2011/0808/1229/000001229492_4.shtml">具體介紹:http://tech.it168.com/a2011/0808/1229/000001229492_4.shtml</a>
下面介紹安裝和使用:
安裝過程
[root@vm02]# mk-table-checksum h=localhost,u=root,p=123456 h=192.168.8.22,u=admin,p=123456 -d test -t t1
Cannot connect to MySQL because the Perl DBI module is not installed or not found. Run 'perl -MDBI' to see the directories that Perl searches for DBI. If DBI is not installed, try:
Debian/Ubuntu apt-get install libdbi-perl
RHEL/CentOS yum install perl-DBI
OpenSolaris pgk install pkg:/SUNWpmdbi
[root@vm02]#
提示缺少perl-DBI子產品,那麼直接 yum install perl-DBI。
主庫master:192.168.8.23
從庫slave: 192.168.8.22
我們在主庫上運作:
[root@vm02 ~]# mk-table-checksum h=localhost,u=root,p=123456 h=192.168.8.22,u=admin,p=123456 -d test
DATABASE TABLE CHUNK HOST ENGINE COUNT CHECKSUM TIME WAIT STAT LAG
test heartbeat 0 localhost MyISAM NULL 3775992158 0 0 NULL NULL
test heartbeat 0 192.168.8.22 MyISAM NULL 4070270504 0 0 NULL NULL
test t1 0 localhost InnoDB NULL 1245381782 0 0 NULL NULL
test t1 0 192.168.8.22 InnoDB NULL 1906296014 0 0 NULL NULL
test t2 0 localhost InnoDB NULL 251493421 0 0 NULL NULL
test t2 0 192.168.8.22 InnoDB NULL 251493421 0 0 NULL NULL
[root@vm02 ~]#
如果表不一緻,CHECKSUM的值是不相等的。
解釋下輸出的意思:
DATABASE:資料庫名
TABLE:表名
CHUNK:checksum時的近似數值
HOST:MYSQL的位址
ENGINE:表引擎
COUNT:表的行數
CHECKSUM:校驗值
TIME:所用時間
WAIT:等待時間
STAT:MASTER_POS_WAIT()傳回值
LAG:slave的延時時間
如果你想過濾出不相等的都有哪些表,可以用mk-checksum-filter這個工具。
隻要在後面加個管道符就行了。
[root@vm02 ~]# mk-table-checksum h=localhost,u=root,p=123456 h=192.168.8.22,u=admin,p=123456 -d test | mk-checksum-filter
test heartbeat 0 192.168.8.22 MyISAM NULL 1566188174 0 0 NULL NULL
test heartbeat 0 localhost MyISAM NULL 1271909828 0 0 NULL NULL
知道有哪些表不一緻,那麼我們就可以處理了。
可以用mk-table-sync這個工具來處理。
注:在執行mk-table-checksum時會鎖表,表的大小取決于執行的快慢。
本文轉自 liang3391 51CTO部落格,原文連結:http://blog.51cto.com/liang3391/735498