学习目标:
了解熟悉mysqldiff 数据库对象级别比较工具.
下载地址: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、案例
示例一:检查 server1,server2 上的某个表是否一致
mysqldiff --server1=root:root@192.168.16.51:3306 --server2=root:root@192.168.16.52:3306 itpuxdb.itpux_m5:itpuxdb.itpux_m5
示例二:检查 server1,server2 上的两个数据库中的所有的表是否一致
mysqldiff --server1=root:root@192.168.16.51:3306 --server2=root:root@192.168.16.52:3306 itpuxdb:itpuxdb
changes-for 选项来控制对比方向。默认是以 server1。同时显示,可以使用--show-reverse 选项。
mysqldiff --server1=root:root@192.168.16.51:3306 --server2=root:root@192.168.16.52:3306 itpuxdb.itpux_m5:itpuxdb.itpux_yg --difftype=sql --show-reverse -vvv
总结:
$ mysqldiff --server1=user:pass@host:port:socket --server2=user:pass@host:port:socket db1.object1:db2.object1 db3:db4
这个语法有两个用法:
db1:db2:如果只指定数据库,那么就将两个数据库中互相缺少的对象显示出来,不比较对象里
面的差异。这里的对象包括表、存储过程、函数、触发器等。
db1.object1:db2.object1:如果指定了具体表对象,那么就会详细对比两个表的差异,包括表名、字段名、备注、索引、大小写等所有的表相关的对象。
一些主要的参数:
--server1:配置 server1 的连接。
--server2:配置 server2 的连接。
--character-set : 配置连接时用的字符集 ,如果不配置默认使用 character_set_client。
--width:配置显示的宽度。
--skip-table-options :保持表的选项不变 , 及对比的差异里面不包括表名 、AUTO_INCREMENT、ENGINE、CHARSET 等差异。
-d DIFFTYPE,--difftype=DIFFTYPE : 差 异 的 信 息 显 示 的 方 式 , 有[unified|context|differ|sql],默认是 unified。如果使用 sql,那么就直接生成差异的 SQL,这样非常方便。
--changes-for=:修改对象。例如--changes-for=server2,那么对比以 sever1 为主,生成的差异的修改也是针对 server2 的对象的修改。
--show-reverse:在生成的差异修改里面,同时会包含 server2 和 server1 的修改。