这个maakit工具包不错,里面的有很多对mysql分析的软件
下载地址:http://code.google.com/p/maatkit/downloads/list
组件列表:http://www./doc/
1.maatkit安装
一,安装DBI
cd /root
wget http://ftp./pub/packages/perl/CPAN/authors/id/T/TI/TIMB/DBI-1.616.tar.gz
tar zxvf DBI-1.616.tar.gz
cd DBI-1.616
perl Makefile.PL
make && make install
二,安装data-showtable包
cd /root
wget http://search./CPAN/authors/id/A/AK/AKSTE/Data-ShowTable-3.3.tar.gz
tar zxvf Data-ShowTable-3.3.tar.gz
cd Data-ShowTable-3.3
perl Makefile.PL
make && make install
make的时候报错了:
*** ERROR: unterminated I<...> at line 724 in file ShowTable.pm
*** ERROR: unterminated I<...> at line 724 in file ShowTable.pm
编辑一下ShowTable.pm 找到724行,修改
I<\@title_formats 改为I<\@title_formats>
I<\@data_formats 改为I<\@data_formats>
三,安装msql-mysql-modules
cd /root
wget http://search./CPAN/authors/id/J/JW/JWIED/Msql-Mysql-modules-1.2219.tar.gz
tar zxvf Msql-Mysql-modules-1.2219.tar.gz
cd Msql-Mysql-modules-1.2219
perl Makefile.PL
make && make install
make的时候报错了:
make[1]: *** [mysql.o] Error 1
make[1]: Leaving directory `/root/Msql-Mysql-modules-1.2219/mysql'
make: *** [subdirs] Error 2
先执行第四步:在执行到make的时候会在目录下生成mysql.o文件,
cp /root/DBD-mysql-4.020/mysql.o /root/Msql-Mysql-modules-1.2219/mysql/后,
重新make一下就不会报错了
四,安装DBD-mysql
cd /root
wget http://search./CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.019.tar.gz
tar zxvf DBD-mysql-4.019.tar.gz
cd DBD-mysql-4.019
perl Makefile.PL --mysql_config=/usr/local/mysql/bin/mysql_config
make
make test
make test出错了,如果报错像上面一样,那么就执行
# cp /usr/local/mysql/lib/mysql/* /usr/lib
# cp /usr/local/mysql/lib/mysql/* /usr/lib64/(如果64位 否则是lib)
如果上面这一步没做,则到安装maatkit的时候,在perl Makefile.PL会出现警告:prerequisite DBD::mysql 1 not found.
make test
make
make install
五,安装maatkit
cd /root
wget -S http://maatkit./files/maatkit-7540.tar.gz
tar zxvf maatkit-7540.tar.gz
cd maatkit-7540
perl Makefile.PL
make && make install
六、在主库添加用户
grant all privileges on *.* to 'root'@'192.168.9.1' identified by '123456';
为mk-table-checksum命令执行做准备
以下是mk-table-checksum的举例说明
命令行如下:
1、检测 mk-table-checksum h=192.168.9.1,u=root,p=123456,P=3306 h=127.0.0.1,u=root,p=passwd,P=3306 -d db1
对192.168.9.1和127.0.0.1的db1库进行了一次一致性对比测试。
DATABASE:数据库名
TABLE:表名
CHUNK:checksum时的近似数值
HOST:MYSQL的地址
ENGINE:表引擎
COUNT:表的行数
CHECKSUM:校验值
TIME:所用时间
WAIT:等待时间
STAT:MASTER_POS_WAIT()返回值
LAG:slave的延时时间
2、如果你想过滤出不相等的都有哪些表,可以用mk-checksum-filter这个工具
mk-table-checksum h=192.168.9.1,u=root,p=123456,P=3306 h=127.0.0.1,u=root,p=passwd,P=3306 -d db1 |mk-checksum-filter
当检查时报错为
Had to create DBD::mysql::dr::imp_data_size unexpectedly at /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/DBI.pm line 1063.
Had to create DBD::mysql::db::imp_data_size unexpectedly at /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/DBI.pm line 1063.
Undefined subroutine &DBD::mysql::db::_login called at /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/DBD/mysql.pm line 129.
安装perl模块
perl -MCPAN -e shell
install DBD::mysql
install dr::imp_data
3、mk-table-sync 先主后从有效保证表一致的工具,不必重载从表而能够保证一致。
[root@vm01 ~]# mk-table-sync --execute --charset=utf8 --print --no-check-slave --databases test h=192.168.9.1,u=admin,p=123456 h=192.168.9.2,u=admin,p=123456
这里要说明一下,--no-check-slave这个参数,如果你不加这个参数,会提示报错,因为这个工具默认是不允许在从库上修改数据的,但我们这里为了不在主库上dump出来,再到从库上导入进去,加了这个参数。
它的工作原理是:先一行一行检查主从库的表是否一样,如果哪里不一样,就执行删除,更新,插入等操作,使其达到一致。
|