专栏首页爱可生开源社区数据传输 | mysqldiff/mysqldbcompare 实现 DTLE 自动化测试

数据传输 | mysqldiff/mysqldbcompare 实现 DTLE 自动化测试

作者:张静文

爱可生上海研发中心成员,测试工程师,负责 DMP 以及 DTLE 自动化测试。

本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

任务:

测试开源产品 dtle(https://github.com/actiontech/dtle),对 mysql 字符类型,表结构的支持性。

测试需求如下:

1. 测试 dtle 对 mysql 所有的字符类型支持性

2. 测试 dtle 对表结构的支持性

3. 等.......

测试步骤大致为:

1. 设计表结构,数据类型。

2. 使用 dtle 迁移表/数据。

3. 对比使用 dtle 迁移的源数据库和目标数据库的数据、表结构是否有差异。

起初,我开启了 2 个窗口一条条的对比,但是当我比对到第 100 条数据的时候,我发现眼花了,似乎有些数据“好像不一样”。我还有好几万条数据要这么对比呢,而且每次发新版本,我都要这么来一次......这不是人能完成的艰难任务!

所以我寻找是不是有什么工具能帮我做这部分工作,搜索后发现一部分私人写的小工具(具体的就不列举了),但是经过使用后,发现很多工具自身就带有一部分 BUG,如果我用这些工具做数据对比肯定会遗漏 BUG。

经过几天的搜索试用,发现 mysql 官方提供了一个非常不错工具mysqldiff/mysqldbcompare,所以想着分享给大家。

以下就直接说说使用方法:

(系统:Ubuntu 18.04)

1. 软件下载,地址如下:

https://cdn.mysql.com/archives/mysql-utilities/mysql-utilities-1.6.5.tar.gz

2. 解压到当前目录 mysql-utilities-1.6.5 下:

tar -zxvf mysql-utilities-1.6.5.tar.gz

3. cd 到 mysql-utilities-1.6.5,执行安装:

apt install mysql-utilities

如下图:

4. 演示 mysql-utilities 中的 mysqldiff 使用和效果:

首先我们可以通 过 mysqldiff --help 命令查看用法:

接下来我要测试通过 DTLE 数据迁移的 2 个数据库,然后验证:

1. 是否有表结构改变

2. DTLE 是否将源数据库的所有数据全部迁移到目标数据库

分别使用如下 2 条命令:

mysqldiff--server1=test:test@10.20.30.3:3306--server2=test1:test1@10.20.30.4:3307 testdb:testdb

执行效果如下:

结论:通过比对,发现源数据库中有 2 张表并不在目标数据库中,而且很详细的列出了迁移失败的表名。

mysqldiff--server1=test:test@10.20.30.3:3306--server2=test1:test1@10.20.30.4:3307 testdb.char_columns:testdb.char_columns

执行效果如下:

结论:通过比对,发现有源数据库中 char_columns 表的建表语句有差异。

5. 演示 mysql-utilities 中的 mysqldbcompare 使用和效果:

同上我们可以通过 mysqldbcompare --help 命令查看用法:

使用如下命令可以查看源库和目标库中的表数据是否有差异:

mysqldbcompare--server1=test:test@10.20.30.3:3306--server2=test1:test1@10.20.30.4:3307 testdb:testdb

执行效果如下:

结论:通过比对,发现源库和目标库中的数据一致。

本次分享几条简单的命令到此结束。

重点在于:

1. 作为测试,我们可以通过以上 2 个小工具减少我们重复性的工作,提高测试结果的准确性。

2. 如果我们有一定代码基础,可以集成以上小工具,完成一套 DTLE 的自动化测试脚本,方便以后每次版本发布的回归测试。

本文分享自微信公众号 - 爱可生开源社区(ActiontechOSS),作者:张静文

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 技术分享 | 使用备份恢复实例时存在的坑

    爱可生服务团队成员,负责处理客户在MySQL日常运维中遇到的问题;擅长处理备份相关的问题,对数据库相关技术有浓厚的兴趣,喜欢钻研各种问题。

    爱可生开源社区
  • 第10期:选择合适的表空间

    MySQL 表空间可分为共享表空间和单表空间;其中共享表空间又可分为系统表空间和通用表空间。

    爱可生开源社区
  • 技术分享 | MariaDB 10.1.9 迁移到 MySQL 5.7.25

    爱可生 DBA 团队成员,负责项目日常问题处理及公司平台问题排查,对数据库有兴趣,对技术有想法。一入 IT 深似海,从此节操是路人。

    爱可生开源社区
  • MySql准备工作

    拾点阳光
  • 在VC6.0中连接mysql数据库的方法实例

    (本文年代久远,请谨慎阅读)最近用JAVA写程序,在连接数据库并操作上感觉还是较其他语言简单多了,在这方面C/C++就显得有点繁杂,不过也并非难事。 首先就是要...

    ZONGLYN
  • MySQL 8.0.15安装教程

    四.下载完成后解压 ,解压完是这个样子,没有的my.ini文件(这个是后一步我加的配置)

    故久
  • Ubuntu 14.04 安装mysql

    wget http://dev.mysql.com/get/mysql-apt-config_0.8.1-1_all.deb

    悟空聊架构
  • 第10期:选择合适的表空间

    MySQL 表空间可分为共享表空间和单表空间;其中共享表空间又可分为系统表空间和通用表空间。

    爱可生开源社区
  • mysql分库备份与分表备份

    要求:将mysql数据库中的用户数据库备份,备份的数据库文件以时间命名 脚本内容如下:

    山山仙人
  • windows安装mysql示例

    1. 下载mysql安装包,如: mysql-5.6.34-winx64.zip 2. 解压安装包到指定目录,如:D盘,即:D:\mysql-5.6.34-wi...

    2Simple

扫码关注云+社区

领取腾讯云代金券