mk-table-checksum检查主从表是否一致及有效的工具具体介绍:http://tech.it168.com/a2011/0808/1229/000001229492_4.shtml下面介绍安装和使用:安装过程[root@vm02]# mk-table-checksum h=localhost,u=root,p=123456 h=192.168.8.22,u=admin,p=123456 -d test -t t1Cannot 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 testDATABASE TABLE CHUNK HOST ENGINE COUNTCHECKSUMTIME WAIT STAT LAGtest heartbeat 0 localhost MyISAM NULL 3775992158 0 0 NULL NULLtest heartbeat 0 192.168.8.22 MyISAM NULL 4070270504 0 0 NULL NULLtest t1 0 localhost InnoDB NULL 1245381782 0 0 NULL NULLtest t1 0 192.168.8.22 InnoDB NULL 1906296014 0 0 NULL NULLtest t2 0 localhost InnoDB NULL 251493421 0 0 NULL NULLtest 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-filtertest heartbeat 0 192.168.8.22 MyISAM NULL 1566188174 0 0 NULL NULLtest heartbeat 0 localhost MyISAM NULL 1271909828 0 0 NULL NULLtest t1 0 192.168.8.22 InnoDB NULL 1906296014 0 0 NULL NULLtest t1 0 localhost InnoDB NULL 1245381782 0 0 NULL NULL[root@vm02 ~]#知道有哪些表不一致,那么我们就可以处理了。可以用mk-table-sync这个工具来处理。注:在执行mk-table-checksum时会锁表,表的大小取决于执行的快慢。
本文转自 liang3391 51CTO博客,原文链接:http://blog.51cto.com/liang3391/735498