mysql db compare_数据传输 | mysqldiff/mysqldbcompare 实现 DTLE 自动化测试
作者:張靜文
愛可生上海研發中心成員,測試工程師,負責 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. 軟件下載,地址如下:
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 的自動化測試腳本,方便以后每次版本發布的回歸測試。
總結
以上是生活随笔為你收集整理的mysql db compare_数据传输 | mysqldiff/mysqldbcompare 实现 DTLE 自动化测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 03 mysql数据查询_MySql学习
- 下一篇: mysql字段名大写好处_数据库的表名字