栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

mysql主从一致性校验_MySQL主从验证技术03?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mysql主从一致性校验_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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/786659.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号