ITPub博客

首页 > 数据库 > MySQL > mysql之mysqldbcompare实现多库数据对比

mysql之mysqldbcompare实现多库数据对比

原创 MySQL 作者:kaixinguo8115 时间:2015-01-11 18:38:41 0 删除 编辑
一、简介
     在使用mysql replication时,有时候会担心,如果主库和备库的数据不一致,怎么办?之前,自己用过一个非常笨的办法,就是,根据生产库的中的主键,从information_schema中,把生产库中的表和字段全部查出来,然后查询每个字段的数据,一一对比。这样的话,在数据量特别大的情况下,耗时简直恐怖。
     最近找到了一个mysql的工具,mysqldbcompare,可以实现对多库数据的对比。
     官方文档:http://dev.mysql.com/doc/mysql-utilities/1.3/en/mysqldbcompare.html
     工具下载地址:
二、安装
     解压安装后,需要使用python命令进行安装
     cd mysql-utilities-1.4.0-labs-fabric
     python setup.py install
     安装完成后,mysqldbcompare命令在/usr/local/bin下面。
三、mysqldb用法
     详细的参数解释,可以参照官方文档。这里只解释几个常用的参数
     --server1=user:passwprd@host    要对比的第一个库,指定用户、密码和主机。如果没有密码,密码可以忽略
     --server2=user:password@host    要对比的第二个库,指定用户、密码和主机。如果没有密码,密码可以忽略
     --difftype=[unified|context|differ|sql] unified和context、differ:会显示相差的具体的数据。sql:会生成的具体的SQL。具体信息,如下:
    difftype_sql.txtdifftype_differ.txtdifftype_unified.txtdifftype_context.txt
     --changes-for=[server1|server2] 以difftype=sql为例,如果设置changes-for=server1,那么,生成的sql是update server1.tables set * * * *
     --run-all-test 检查所有,即使检测到第一个不一致的数据,仍然继续。
    绝大部分情况下,我们需要检查特定的几个库,这是可以指定命令,比如:
    mysqldbcompare --server1=root:root@127.0.0.1:3306 --server2=root:root@127.0.0.1:3307 --run-all-test --changes-for=server1 --difftype=sql test1:test2
    其中,test1库是server1上的库,test2是server2上的库。这样,我们就只检查test1和test2这两个库。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26418713/viewspace-1398195/,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle dg之重建DG
请登录后发表评论 登录
全部评论

注册时间:2014-01-30

  • 博文量
    13
  • 访问量
    79994