More  

小編的世界 優質文選 資料

MySQL如何實現 DTLE 自動化測試-愛可生


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 的自動化測試腳本,方便以後每次版本發布的回歸測試。

  大家在看