mydumper / myloader 是什么
mydumper 是第三方多线程逻辑备份工具,把每张表拆成多个 chunk 并行导出,并能边导边压缩;myloader 是与之配套的并行恢复工具。相比单线程的 mysqldump,大库上耗时通常能降到几分之一,代价是必须额外安装维护、且参数与版本匹配要求更严格。备份目录里除数据文件外还有 metadata(记录位点与 GTID),是重建从库和做时间点恢复的依据。
基本信息
| 适用版本 | MySQL 5.7 / 8.0(mydumper 版本需与数据库版本匹配) |
|---|---|
| 备份命令 | mydumper -h 主机 -u 用户 -p 密码 -B 库 -o 目录 -t 线程数 |
| 恢复命令 | myloader -h 主机 -u 用户 -d 目录 -t 线程数 |
| 常用参数 | -C 压缩、-G 记录 GTID、-E 事件、-R 存储过程、-M 处理无主键表 |
| 输出结构 | 每表一个 .sql 文件 + metadata 元信息 |
| 权限要求 | RELOAD、LOCK TABLES、REPLICATION CLIENT 等备份所需权限 |
典型使用场景
- 大库日常全备:用并行度把窗口压到可接受范围
- 快速搭测试环境:并行恢复到临时实例,比单线程快出数倍
- 按表恢复:目录里每表一个文件,定位某张表比翻大 dump 容易
- 迁移到新版本前留一份逻辑备份做保底
- 配合位点信息重建从库或做时间点恢复
并行备份与恢复
并行备份与恢复
# 并行备份:8 线程、压缩、记录 GTID 与事件、导出存储过程
mydumper -h 127.0.0.1 -u backup -p '***' -B appdb \
-o /data/backup/appdb_$(date +%F) -t 8 -C -G -E -R
# 查看工具版本与输出文件,确认没有空文件
mydumper --version && ls -lh /data/backup/appdb_$(date +%F) | head
# 并行恢复
myloader -h 127.0.0.1 -u root -p '***' \
-d /data/backup/appdb_2026-10-12 -t 8与 mysqldump 的取舍
| 维度 | mydumper / myloader | mysqldump |
|---|---|---|
| 并发度 | 多线程导出与恢复,可指定 -t | 单线程,长事务大表耗时长 |
| 输出结构 | 每表一个文件,便于单表定位 | 单个大文件,需按行号切分 |
| 额外信息 | metadata 含位点与 GTID | 需另加 --master-data 记录位点 |
| 依赖 | 需额外安装并匹配版本 | 官方自带,开箱即用 |
| 适用规模 | 几十 GB 以上的大库 | 中小库与临时导出 |
备份目录里的 metadata 文件记录了备份时刻的二进制日志位点与 GTID,重建从库、做时间点恢复都靠它;目录清理策略要保证它与数据文件同时保留,只有数据文件等于废备份。
无主键表无法拆分 chunk,会被串行导出甚至按版本策略跳过;备份完成后要核对目录中的文件数量与库内表数量,确认没有整表漏掉。