Maatkit工具,Mysql自动检测数据一致性

[root@localhost ~]# perl -v  

安装DBI 下载地址:

  1. [root@localhost ~]# wget http://ftp.cuhk.edu.hk/pub/packages/perl/CPAN/authors/id/T/TI/TIMB/DBI-1.616.tar.gz  
  2. [root@localhost ~]# tar zxvf DBI-1.616.tar.gz  
  3. [root@localhost ~]# cd DBI-1.616  
  4. [root@localhost ~]# perl Makefile.PL
  5. [root@localhost DBI-1.616]# make 
  6. [root@localhost DBI-1.616]# make install 

安装DBD-mysql 下载地址:http://search.cpan.org/dist/DBD-mysql/

  1. [root@localhost ~]# wget http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.019.tar.gz  
  2. [root@localhost ~]# tar zxvf DBD-mysql-4.019.tar.gz  
  3. [root@localhost ~]# cd DBD-mysql-4.019  
[root@localhost ~]# wget http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.019.tar.gz
[root@localhost ~]# tar zxvf DBD-mysql-4.019.tar.gz
[root@localhost ~]# cd DBD-mysql-4.019

[root@localhost DBD-mysql-4.019]# perl Makefile.PL --mysql_config=/usr/local/mysql/bin/mysql_config 

[root@localhost DBD-mysql-4.019]# make  

[root@localhost DBD-mysql-4.019]# make  test

[root@localhost DBD-mysql-4.019]# make  

[root@localhost DBD-mysql-4.019]# make  install

 

安装maatkit 下载地址: http://www.maatkit.org/

wget http://maatkit.googlecode.com/files/maatkit-7540.tar.gz

tar zxvf maatkit-7540.tar.gz

cd maatkit-7540

 perl Makefile.PL 

make install

 

  1. [root@localhost ~]# mk-  
[root@localhost ~]# mk-
  1. mk-archiver               mk-index-usage            mk-query-advisor          mk-table-checksum  
  2. mk-checksum-filter        mk-kill                   mk-query-digest           mk-table-sync  
  3. mk-config-diff            mk-loadavg                mk-query-profiler         mk-table-usage  
  4. mk-deadlock-logger        mk-log-player             mk-show-grants            mk-tcp-model  
  5. mk-duplicate-key-checker  mk-merge-mqd-results      mk-slave-delay            mk-upgrade  
  6. mk-error-log              mk-parallel-dump          mk-slave-find             mk-variable-advisor  
  7. mk-fifo-split             mk-parallel-restore       mk-slave-move             mk-visual-explain  
  8. mk-find                   mk-profile-compact        mk-slave-prefetch  
  9. mk-heartbeat              mk-purge-logs             mk-slave-restart  

 

我们在从库上运行

[root@vm01 ~]# mk-table-sync --execute --print --no-check-slave --databases test h=192.168.8.23,u=admin,p=123456 h=192.168.8.22,u=admin,p=123456
DELETE FROM `test`.`heartbeat` WHERE `server_id`='11' LIMIT 1 /*maatkit src_db:test src_tbl:heartbeat src_dsn:h=192.168.8.23,p=...,u=admin dst_db:test dst_tbl:heartbeat dst_dsn:h=192.168.8.22,p=...,u=admin lock:0 transaction:0 changing_src:0 replicate:0 bidirectional:0 pid:4176 user:root host:vm01*/;
DELETE FROM `test`.`t1` WHERE `id`='22' LIMIT 1 /*maatkit src_db:test src_tbl:t1 src_dsn:h=192.168.8.23,p=...,u=admin dst_db:test dst_tbl:t1 dst_dsn:h=192.168.8.22,p=...,u=admin lock:0 transaction:1 changing_src:0 replicate:0 bidirectional:0 pid:4176 user:root host:vm01*/;
INSERT INTO `test`.`t1`(`id`) VALUES ('2') /*maatkit src_db:test src_tbl:t1 src_dsn:h=192.168.8.23,p=...,u=admin dst_db:test dst_tbl:t1 dst_dsn:h=192.168.8.22,p=...,u=admin lock:0 transaction:1 changing_src:0 replicate:0 bidirectional:0 pid:4176 user:root host:vm01*/;

[root@vm01 ~]#

这里要说明一下,主从数据库表和表结构必须一致,否则会报错,,,--no-check-slave这个参数,如果你不加这个参数,会提示报错,因为这个工具默认是不允许在从库上修改数据的,但我们这里为了不在主库上dump出来,再到从库上导入进去,加了这个参数。

它的工作原理是:先一行一行检查主从库的表是否一样,如果哪里不一样,就执行删除,更新,插入等操作,使其达到一致。

这时,我们在检查下主从表的完整性、一致性

在主库上运行

[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       3258230607    0    0 NULL NULL
test     heartbeat     0 192.168.8.22 MyISAM       NULL       3258230607    0    0 NULL NULL
test     t1            0 localhost    InnoDB       NULL       1245381782    0    0 NULL NULL
test     t1            0 192.168.8.22 InnoDB       NULL       1245381782    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 ~]#
[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
[root@vm02 ~]#

可以看到,主从库的表数据已经完全一样了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值