日期:2014-05-16 浏览次数:20761 次
Maatkit是Mysql的一个高级管理工具集。 官方网站:http://www.maatkit.org/
参考:
http://www.bigheaddba.net/article/ytag/maatkit
http://code.google.com/p/maatkit/
#1安装一系列依赖软件
Perl
perl-DBI.x86_64 : A database access API for perl
perl-DBD-MySQL.x86_64 : A MySQL interface for perl
perl-TermReadKey
wget http://packages.sw.be/perl-TermReadKey/perl-TermReadKey-2.30-3.el5.rf.x86_64.rpm
rpm -ivh perl-TermReadKey-2.30-3.el5.rf.x86_64.rpm
#2安装maatkit
wget http://maatkit.googlecode.com/files/maatkit-6839-1.noarch.rpm
rpm -ivh maatkit-6839-1.noarch.rpm
#3maatkit所包含的常用工具
##########################################################################################
#01、mk-table-checksum检查主从表是否一致及有效的工具
#02、mk-table-sync使表一致的工具,不必重载从表而能够保证一致
#03、mk-visual-explainexlpain解释工具
#04、mk-heartbeat主从同步的监视工具,能够给出从落后于主多少
#05、mk-parallel-dump多线程的mysqldump工具
#06、mk-parallel-restore多线程的表修复工具
#07、mk-query-profiler查询检测分析工具
#08、mk-deadlock-logger死锁的记录工具
#09、mk-duplicate-key-checkerkey侦测工具
#10、mk-show-grants权限管理显示工具
#11、mk-slave-restart slave的检测和重启工具
#12、mk-slave-delay slave delay replication 的工具
##########################################################################################
#4使用 maatkit 的工具检查master和slave之间不一致的数据表
示例如下:
[root@mysql-1 ~]# mk-table-checksum h=10.1.30.203,u=dba,p=dba,P=3306 h=10.1.30.204,u=dba,p=dba,P=3306 -d test DATABASE TABLE CHUNK HOST ENGINE COUNT CHECKSUM TIME WAIT STAT LAG test t 0 10.1.30.203 MyISAM NULL 1096324035 0 0 NULL NULL test t 0 10.1.30.204 MyISAM NULL 261265495 0 0 NULL NULL test t2 0 10.1.30.203 MyISAM NULL 3459908756 0 0 NULL NULL test t2 0 10.1.30.204 MyISAM NULL 3459908756 0 0 NULL NULL test t3 0 10.1.30.203 MyISAM NULL 0 0 0 NULL NULL test t3 0 10.1.30.204 MyISAM NULL 0 0 0 NULL NULL test t4 0 10.1.30.203 InnoDB NULL 2248149615 0 0 NULL NULL test t4 0 10.1.30.204 InnoDB NULL 1413091075 0 0 NULL NULL test t5 0 10.1.30.203 MyISAM NULL 0 0 0 NULL NULL test.t5 does not exist on slave 10.1.30.204:3306 at /usr/bin/mk-table-checksum line 6223. test t5 0 10.1.30.204 MyISAM NULL NULL 0 0 NULL NULL test t6 0 10.1.30.203 MyISAM NULL 0 0 0 NULL NULL test t6 0 10.1.30.204 MyISAM NULL 0 0 0 NULL NULL
?
mk-table-checksum的过滤工具mk-checksum-filter,例如我只想知道上面的例子中,test库中哪些表不是一致的。只需要加一个管道符。
?????
[root@mysql-1 ~]# mk-table-checksum h=10.1.30.203,u=dba,p=dba,P=3306 h=10.1.30.204,u=dba,p=dba,P=3306 -d test |mk-checksum-filter test t 0 10.1.30.203 MyISAM NULL 1096324035 0 0 NULL NULL test t 0 10.1.30.204 MyISAM NULL 261265495 0 0 NULL NULL test t4 0 10.1.30.203 InnoDB NULL 2248149615 0 0 NULL NULL test t4 0 10.1.30.204 InnoDB NULL 1413091075 0 0 NULL NULL test.t5 does not exist on slave 10.1.30.204:3306 at /usr/bin/mk-table-checksum line 6223. test t5 0 10.1.30.203 MyISAM NULL 0 0 0 NULL NULL test t5 0 10.1.30.204 MyISAM NULL NULL 0 0 NULL NULL
?
需要注意的是,mk-table-checksum工具在检查的时候会对表加一个表级锁,应该放在系统不繁忙的时候执行。