6g下載網
當前位置: 主頁 > 軟件教程 > 云計算 >

mysqlpump與mysqlpump邏輯備份工具對比測試

時間: 2016-02-24 15:22 來源: 本站整理

分享到:

下面給大家介紹mysqlpump與mysqlpump邏輯備份工具對比測試,希望能給大家提供幫助。

昨天Inside君寫到MySQL 5.7.11版本發布,其中最有意義的部分在于官方修復了之前mysqlpump工具一致性備份的問題,使得mysqlpump工具在生產環境中有了用武之地。而在之前MySQL 5.7的文檔中明確寫著,mysqlpump是不支持一致性的備份:

Before MySQL 5.7.11, use of the –single-transaction option is mutually exclusivewith parallelism. To use –single-transaction, disable parallelism by setting –default-parallelism to 0 and not using any instances of –parallel-schemas

在5.7.11版本的change history中,對于這個問題已經有了修復:

mysqlpump tries to do as much work in parallel as possible, but the dump threads lacked a synchronization point before backing up the data, resulting in inconsistent backup.

mysqlpump相對于之前的邏輯備份工具mysqldump來說,Inside君總結的優勢如下:

支持基于表的并行導出功能(參數–default-parallelism,默認為2,參數–parallel-schemas,控制并行導出的庫)

導出的時候帶有進度條(參數–watch-progress,默認開啟)

支持直接壓縮導出導入(參數–compress-output,支持ZLIB和LZ4)

mysqlpump的并行導出功能的架構為:隊列+線程,允許有多個隊列,每個隊列下有多個線程,而一個隊列可以綁定1個或者多個數據庫。但是,對于每張表的導出只能是單個線程的,這和mydumper工具是不一樣的,因為mydumper支持一張表多個線程以chunk的方式批量導出,這在主鍵是隨機的情況下,導出速度還能有提升。mysqlpump的架構如下圖所示:

mysqlpump與mysqlpump邏輯備份工具對比測試

接著Inside君對比了mysqldump與mysqlpump的導出速度,選擇的數據庫大小為7.8G,每次備份測試時都重啟數據庫,清空緩沖池中的內容。其中各表的大小如下所示:

  1. [email protected]:/mdata/mysql_data# ls -lh tpcc/*.ibd  
  2. -rw-r----- 1 mysql mysql 1.9G Feb 21 22:58 tpcc/customer.ibd  
  3. -rw-r----- 1 mysql mysql 160K Feb 21 23:12 tpcc/district.ibd  
  4. -rw-r----- 1 mysql mysql 208M Feb 21 22:58 tpcc/history.ibd  
  5. -rw-r----- 1 mysql mysql  17M Feb 21 22:23 tpcc/item.ibd  
  6. -rw-r----- 1 mysql mysql  32M Feb 22 00:05 tpcc/new_orders.ibd  
  7. -rw-r----- 1 mysql mysql 2.1G Feb 22 10:00 tpcc/order_line.ibd  
  8. -rw-r----- 1 mysql mysql 132M Feb 22 00:05 tpcc/orders.ibd  
  9. -rw-r----- 1 mysql mysql 3.5G Feb 21 23:12 tpcc/stock.ibd  
  10. -rw-r----- 1 mysql mysql  48K Feb 21 23:11 tpcc/warehouse.ibd 

由于只有tpcc單個數據庫,這里mysqlpump測試采用默認單隊列2個線程和單隊列4個線程測試,mysqlpump測試語句如下:

  1. [email protected]:/mdata/mysql_data# time mysqlpump --single-transaction  -B tpcc > tpcc.sql  
  2. [email protected]:/mdata/mysql_data# time mysqlpump --single-transaction --default-parallelism=4 -B tpcc > tpcc.sql  

最后的測試結果如下所示:

mysqlpump與mysqlpump邏輯備份工具對比測試

測試在網易云環境下,這時可以發現默認配置下mysqlpump的速度比起mysqldump快了39.04%,4個線程下快了有48.89%。接著測試多個數據庫備份的場景,這里選擇7.8G大小的tpcc庫和2.4G大小的dbt3數據庫,最后得到的結果mysqlpump比起mysqldump最高快了70%多的時間:

mysqlpump與mysqlpump邏輯備份工具對比測試

總結

mysqlpump的語法與mysqldump高度兼容,支持基于庫和表的并行導出,對比mysqldump速度提升非常明顯。MySQL 5.7.11版本解決了一致性備份問題,推薦線上環境使用。由于每個數據庫大小,架構不同,測試給出的速度提升只是參考,或許在你的環境會沒有任何差別,也可能速度提升更大。anyway,是時候好好測試mysqlpump,看看對你的生產環境是否會有極大的速度提升。

(責任編輯:6g下載網)

分享到:

------分隔線----------------------------
? 35选7福利彩票