數據庫備份誰更快?mydumper VS mysqldump 實測對比
在日常運維或者開發環境中,數據庫備份與恢復都是繞不開的話題。MySQL 官方自帶的mysqldump工具一直是很多人的首選,但隨著數據量的增長,mysqldump在速度和效率上的短板越來越明顯。于是,社區里出現了性能更強的替代方案——mydumper/myloader。
今天星哥就帶大家做一個實測對比,看看mysqldump 和 mydumper 在備份、恢復上的速度差距,結果可能會讓你有點驚訝。
?備份工具:
mydumpervsmysqldump?恢復工具:
myloadervsmysql
為了保證對比公平,我們在相同環境下進行了測試:
?數據庫版本:MySQL 5.7
?數據量:數據庫約 24 萬行,總大小約 20GB
?硬件配置:8 核 CPU,32GB 內存,SSD 硬盤
?工具版本:
? mysqldump:MySQL 官方自帶版本
? mydumper/myloader:v0.19.4
備份星哥玩云的的wordpress數據庫,DB總共有24萬條左右的數據
![]()
img mydumper 備份時間的命令
DB_user='root' DB_host='X.X.X.X' DB_port='3306' DB_passwd='12345678' DB_name='dbname' DB_backup_pwd='/data/backup/mysql/xgss_mydumper' 計算備份時間 start_time=$(date +%s) mydumper -u $DB_user -h $DB_host -p $DB_passwd -P $DB_port -B $DB_name -o $DB_backup_pwd end_time=$(date +%s) echo "備份耗時:$((end_time - start_time)) 秒"mydumper 備份成功 備份時間備份耗時:509 秒備份目錄大小du -sh /data/backup/mysql/xgss_mydumper 256M /data/backup/mysql/xgss_mydumpermyloader恢復數據庫將剛才備份的數據庫恢復到本機
start_time=$(date +%s) myloader -u root -p '123456' -h 127.0.0.1 -P 3306 -B www_xgss_net -d /data/backup/mysql/xgss_mydumper end_time=$(date +%s) echo "恢復耗時:$((end_time - start_time)) 秒"實際顯示如下:
[root@node8 ~]# start_time=$(date +%s) [root@node8 ~]# myloader -u root -h 127.0.0.1 -P 61922 -p '123456' -B www_xgss_net -d /data/backup/mysql/xgss_mydumper end_time=$(date +%s) echo "備份耗時:$((end_time - start_time)) 秒" [root@node8 ~]# end_time=$(date +%s) [root@node8 ~]# echo "備份耗時:$((end_time - start_time)) 秒" 備份耗時:3 秒參數
作用
-u
/-p/-h/-P
數據庫連接信息
-B db01
恢復到的目標數據庫(不存在會自動創建)
備份目錄(mydumper 輸出目錄)
-t 6
恢復線程數(可根據 CPU/IO 調整)
-o
覆蓋已存在的表(DROP 后重建)
-v 3
日志詳細級別(1~3)
恢復之后查看表
為什么行數會變多?看看什么原因
img mysqldump 備份時間的命令
DB_user='root' DB_host='X.X.X.X' DB_port='3306' DB_passwd='12345678' DB_name='dbname' DB_backup_pwd='/data/backup/mysql/xgss_mysqldump' mkdir -p $DB_backup_pwd start_time=$(date +%s) mysqldump -u $DB_user -h $DB_host -P $DB_port -p$DB_passwd $DB_name > $DB_backup_pwd/$DB_name.sql end_time=$(date +%s) echo "備份耗時:$((end_time - start_time)) 秒"mysqldump 備份成功 備份時間備份耗時:445 秒備份目錄大小du -sh /data/backup/mysql/xgss_mysqldump 256M /data/backup/mysql/xgss_mysqldumpmysql恢復數據庫恢復命令
start_time=$(date +%s) mysql -u root -h 127.0.0.1 -P 61922 -p'123456' www_xgss_net2 < /data/backup/mysql/xgss_mysqldump/xgss2.sql end_time=$(date +%s) echo "備份耗時:$((end_time - start_time)) 秒"備份耗時備份耗時:22 秒備份前的數據量
mysql> SELECT SUM(table_rows) AS total_rows FROM information_schema.tables WHERE table_schema = 'www_xgss_net'; +------------+ | total_rows | +------------+ | 274473 | +------------+ 1 row in set (0.02 sec)恢復之后的數據量
mysql> SELECT SUM(table_rows) AS total_rows FROM information_schema.tables WHERE table_schema = 'www_xgss_net'; +------------+ | total_rows | +------------+ | 304427 | +------------+ 1 row in set (0.02 sec) mysql> SELECT SUM(table_rows) AS total_rows FROM information_schema.tables WHERE table_schema = 'www_xgss_net2'; +------------+ | total_rows | +------------+ | 296875 | +------------+ 1 row in set (0.02 sec)結論工具
時間
mysql數據量
mydumper
509秒
myloader
3秒
mysqldump
445秒
mysql
22秒
通過本次對比測試,我們可以得到一個直觀結論:
?mysqldump/mysql:適合小型數據庫、低頻備份場景,工具簡單、穩定,但在大數據量場景下效率較差。
?mydumper/myloader:在大規模數據庫備份/恢復中優勢顯著,支持多線程并行,速度是 mysqldump/mysql 的 4~5 倍,非常適合線上高頻備份和數據遷移。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.