作者:张静文
爱可生上海研发核心成员,测试工程师,负责 DMP 以及 DTLE 自动化测试。
本文起源:原创投稿
* 爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。
工作:
测试开源产品 dtle(https://github.com/actiontech…),对 mysql 字符类型,表构造的支持性。
测试需要如下:
1. 测试 dtle 对 mysql 所有的字符类型支持性
2. 测试 dtle 对表构造的支持性
3. 等 …….
测试步骤大抵为:
- 设计表构造,数据类型。
- 应用 dtle 迁徙表 / 数据。
- 比照应用 dtle 迁徙的源数据库和指标数据库的数据、表构造是否有差别。
起初,我开启了 2 个窗口一条条的比照,然而当我比对到第 100 条数据的时候,我发现眼花了,仿佛有些数据“如同不一样”。我还有好几万条数据要这么比照呢,而且每次发新版本,我都要这么来一次 …… 这不是人能实现的艰巨工作!
所以我寻找是不是有什么工具能帮我做这部分工作,搜寻后发现一部分私人写的小工具(具体的就不列举了),然而通过应用后,发现很多工具本身就带有一部分 BUG,如果我用这些工具做数据比照必定会脱漏 BUG。
通过几天的搜寻试用,发现 mysql 官网提供了一个十分不错工具 mysqldiff/mysqldbcompare,所以想着分享给大家。
以下就间接说说应用办法:
(零碎:Ubuntu 18.04)
1. 软件下载,地址如下:
https://cdn.mysql.com/archive…
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
执行成果如下:
论断:通过比对,发现源库和指标库中的数据统一。
本次分享几条简略的命令到此结束。
重点在于:
- 作为测试,咱们能够通过以上 2 个小工具缩小咱们重复性的工作,进步测试后果的准确性。
- 如果咱们有肯定代码根底,能够集成以上小工具,实现一套 DTLE 的自动化测试脚本,不便当前每次版本公布的回归测试。