首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据库备份谁更快?mydumper VS mysqldump 实测对比

数据库备份谁更快?mydumper VS mysqldump 实测对比

原创
作者头像
星哥玩云
发布2025-09-13 18:15:26
发布2025-09-13 18:15:26
2000
代码可运行
举报
文章被收录于专栏:LinuxLinux
运行总次数:0
代码可运行

数据库备份谁更快?mydumper VS mysqldump 实测对比

在日常运维或者开发环境中,数据库备份与恢复都是绕不开的话题。MySQL 官方自带的 mysqldump 工具一直是很多人的首选,但随着数据量的增长,mysqldump 在速度和效率上的短板越来越明显。于是,社区里出现了性能更强的替代方案——mydumper/myloader

今天星哥就带大家做一个实测对比,看看 mysqldump 和 mydumper 在备份、恢复上的速度差距,结果可能会让你有点惊讶。

  • 备份工具mydumper vs mysqldump
  • 恢复工具myloader vs mysql
img
img

测试环境说明

为了保证对比公平,我们在相同环境下进行了测试:

  • 数据库版本:MySQL 5.7
  • 数据量:数据库约 24 万行,总大小约 20GB
  • 硬件配置:8 核 CPU,32GB 内存,SSD 硬盘
  • 工具版本
    • mysqldump:MySQL 官方自带版本
    • mydumper/myloader:v0.19.4

备份星哥玩云的的wordpress数据库,DB总共有24万条左右的数据

img
img

mydumper 备份时间的命令

代码语言:javascript
代码运行次数:0
运行
复制
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 备份成功

备份时间

代码语言:javascript
代码运行次数:0
运行
复制
备份耗时:509 秒

备份目录大小

代码语言:javascript
代码运行次数:0
运行
复制
du -sh /data/backup/mysql/xgss_mydumper
256M    /data/backup/mysql/xgss_mydumper

myloader恢复数据库

将刚才备份的数据库恢复到本机

代码语言:javascript
代码运行次数:0
运行
复制
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)) 秒"
​

实际显示如下:

代码语言:javascript
代码运行次数:0
运行
复制
[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

恢复到的目标数据库(不存在会自动创建)

-d

备份目录(mydumper 输出目录)

-t 6

恢复线程数(可根据 CPU/IO 调整)

-o

覆盖已存在的表(DROP 后重建)

-v 3

日志详细级别(1~3)

恢复之后查看表

为什么行数会变多?看看什么原因

mysqldump 备份时间的命令

代码语言:javascript
代码运行次数:0
运行
复制
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 备份成功

备份时间

代码语言:javascript
代码运行次数:0
运行
复制
备份耗时:445 秒

备份目录大小

代码语言:javascript
代码运行次数:0
运行
复制
du -sh /data/backup/mysql/xgss_mysqldump
256M    /data/backup/mysql/xgss_mysqldump

mysql恢复数据库

恢复命令

代码语言:javascript
代码运行次数:0
运行
复制
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)) 秒"

备份耗时

代码语言:javascript
代码运行次数:0
运行
复制
备份耗时:22 秒

备份前的数据量

代码语言:javascript
代码运行次数:0
运行
复制
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)

恢复之后的数据量

代码语言:javascript
代码运行次数:0
运行
复制
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秒

274473

myloader

3秒

304427

mysqldump

445秒

274473

mysql

22秒

296875

通过本次对比测试,我们可以得到一个直观结论:

  • mysqldump/mysql:适合小型数据库、低频备份场景,工具简单、稳定,但在大数据量场景下效率较差。
  • mydumper/myloader:在大规模数据库备份/恢复中优势显著,支持多线程并行,速度是 mysqldump/mysql 的 4~5 倍,非常适合线上高频备份和数据迁移。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据库备份谁更快?mydumper VS mysqldump 实测对比
    • 测试环境说明
    • mydumper 备份时间的命令
    • mydumper 备份成功
      • 备份时间
      • 备份目录大小
    • myloader恢复数据库
      • 恢复之后查看表
    • mysqldump 备份时间的命令
    • mysqldump 备份成功
      • 备份时间
      • 备份目录大小
    • mysql恢复数据库
      • 备份耗时
    • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档