一、简介
在使用mysql replication时,有时候会担心,如果主库和备库的数据不一致,怎么办?之前,自己用过一个非常笨的办法,就是,根据生产库的中的主键,从information_schema中,把生产库中的表和字段全部查出来,然后查询每个字段的数据,一一对比。这样的话,在数据量特别大的情况下,耗时简直恐怖。
最近找到了一个mysql的工具,mysqldbcompare,可以实现对多库数据的对比。
官方文档:http://dev.mysql.com/doc/mysql-utilities/1.3/en/mysqldbcompare.html
工具下载地址:http://downloads.mysql.com/snapshots/pb/mysql-connector-utilities-fabric/mysql-utilities-1.4.0-labs-fabric.tar.gz
二、安装
解压安装后,需要使用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.txt
difftype_differ.txt
difftype_unified.txt
difftype_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这两个库。
在使用mysql replication时,有时候会担心,如果主库和备库的数据不一致,怎么办?之前,自己用过一个非常笨的办法,就是,根据生产库的中的主键,从information_schema中,把生产库中的表和字段全部查出来,然后查询每个字段的数据,一一对比。这样的话,在数据量特别大的情况下,耗时简直恐怖。
最近找到了一个mysql的工具,mysqldbcompare,可以实现对多库数据的对比。
官方文档:http://dev.mysql.com/doc/mysql-utilities/1.3/en/mysqldbcompare.html
工具下载地址:http://downloads.mysql.com/snapshots/pb/mysql-connector-utilities-fabric/mysql-utilities-1.4.0-labs-fabric.tar.gz
二、安装
解压安装后,需要使用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。具体信息,如下:
![fj.png](/image/default/fj.png)
![fj.png](/image/default/fj.png)
![fj.png](/image/default/fj.png)
![fj.png](/image/default/fj.png)
--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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26418713/viewspace-1398195/