MySQL主从验证技术03

学习目标:

了解熟悉mysqldbcompare数据库库级别比较工具

mysqldbcompare是官方提供一个可以实现多库或单库比较数据一致工具

下载地址:MySQL :: Download MySQL Utilities (Archived Versions)

或者我的博客:mysql-utilities-1.6.5.tar.gz-MySQL文档类资源-CSDN下载

还需要一个驱动mysql-connector-python-2.1.7-1.el7.x86_64.rpm,从这个资源包里下载:MySQL主从数据校验工具-MySQL文档类资源-CSDN下载

 

 上传目录到/soft/
 


学习内容:

基于此博客环境做演示:MySQL基于GTID无损同步_零Ⅰ的博客-CSDN博客

1、解压安装mysql-utilities-1.6.5.tar.gz
cd /soft

tar zxvf mysql-utilities-1.6.5.tar.gz

cd mysql-utilities-1.6.5

python ./setup.py build

python ./setup.py install

直接依次执行就好

2、安装驱动程序 Connector/Python:
cd /soft

rpm -ivh mysql-connector-python-2.1.7-1.el7.x86_64.rpm

3、案例

示例a、

mysqldbcompare --server1=root:root@192.168.16.51:3306 --server2=root:root@192.168.16.52:3306 itpuxdb:itpuxdb

示例b、

 mysqldbcompare --server1=root:root@192.168.16.51:3306 --server2=root:root@192.168.16.52:3306 --run-all-test -a

 示例c、

mysqldbcompare --server1=root:root@192.168.16.51:3306 --server2=root:root@192.168.16.52:3306 --run-all-test --changes-for=server1 --difftype=sql -a

示例d、

mysqldbcompare --server1=root:root@192.168.16.51:3306 --server2=root:root@192.168.16.52:3306 --run-all-test --changes-for=server1 --difftype=context -a

 4、演示删除从库的某条数据

演示一、

从库192.168.16.52操作:

mysql -uroot -proot

delete from itpuxdb.itpux_m5 limit 1;

commit;

查看数据是否一致:

mysqldbcompare --server1=root:root@192.168.16.51:3306 --server2=root:root@192.168.16.52:3306 --run-all-test --changes-for=server2 --difftype=sql -a

 因为刚刚从库删除一条数据,所以检测出数据不一样,下面会给出insert into插入语句,把给出的插入语句在从库执行即可。

再次查看数据是否一致,执行:

mysqldbcompare --server1=root:root@192.168.16.51:3306 --server2=root:root@192.168.16.52:3306 --run-all-test --changes-for=server2 --difftype=sql -a

结果表示主从数据一致。 

演示二、生成差异化sql来同步sql

从库192.168.16.52操作:

mysql -uroot -proot

delete from itpuxdb.itpux_m5 limit 1;

commit;

 查看数据是否一致:

mysqldbcompare --server1=root:root@192.168.16.51:3306 --server2=root:root@192.168.16.52:3306 --run-all-test --changes-for=server2 --difftype=sql itpuxdb --show-reverse

它会给你出你两条sql语句,一条是从库插入语句,一条是主库删除语句。一般数据不一致,都是把数据添加进去,很少去删掉数据。 


 

总结:

mysqldbcompare 工具参数具体解释,可以参照官方文档。

--server1=user:passwprd@host 要对比的第一个库,指定用户、密码和主机。如果没有密码,密码可以忽略

--server2=user:password@host 要对比的第二个库,指定用户、密码和主机。如果没有密码,密码可以忽略

--difftype=[unified|context|differ|sql] unified 和 context、differ:会显示相差的具体的数据。sql:会生成的具体的 SQL。具体信息,如下:

--changes-for=[server1|server2] 以 difftype=sql 为 例 , 如 果 设 置changes-for=server1,那么,生成的 sql 是 update server1.tables set * * * *

--run-all-test 检查所有,即使检测到第一个不一致的数据,仍然继续。

可以通过--difftype 选项来定义输出风格。

unified (default)统一的格式输出

context 上下文格式输出

differ differ-style 格式输出

sql SQL 转换语句输出

指定如何显示行丢失或改变的输出:

可以通过使用--format 选项来定义。

grid (default)网格化输出,类似于 mysql 命令行客户端输出

csv 逗号分隔格式输出

tab 制表符格式输出

vertical 类似于 mysql 命令行客户端\G 执行的输出

最左边的 db1 对应于--server1 选项,最右边的 dbx 对应于--server2 选项。

--changes-for=server1: 针对 server1,以 server2 为参照物(默认)

--changes


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值