小編的世界 優質文選 資料
字體大小:
2020年9月08日 -
:
作者:張靜文
愛可生上海研發中心成員,測試工程師,負責 DMP 以及 DTLE 自動化測試。
任務:
測試開源產品 dtle,對 mysql 字符類型,表結構的支持性。
測試需求如下:
1. 測試 dtle 對 mysql 所有的字符類型支持性
2. 測試 dtle 對表結構的支持性
3. 等.
測試步驟大致為:
1. 設計表結構,數據類型。
2. 使用 dtle 遷移表/數據。
3. 對比使用 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
結論:通過比對,發現源庫和目標庫中的數據一致。
本次分享幾條簡單的命令到此結束。
重點在於:
1. 作為測試,我們可以通過以上 2 個小工具減少我們重複性的工作,提高測試結果的准確性。
2. 如果我們有一定代碼基礎,可以集成以上小工具,完成一套 DTLE 的自動化測試腳本,方便以後每次版本發布的回歸測試。