首页/数据/数据库速查/mydumper / myloader 并行逻辑备份
备份与恢复56 条

mydumper / myloader 并行逻辑备份

第三方多线程逻辑备份工具:并行导出、分块(chunk)拆表、直接压缩,大型库上比单线程 mysqldump 快数倍,恢复侧对应 myloader。

数据库速查数据更新于 2026-10-13

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 / myloadermysqldump
并发度多线程导出与恢复,可指定 -t单线程,长事务大表耗时长
输出结构每表一个文件,便于单表定位单个大文件,需按行号切分
额外信息metadata 含位点与 GTID需另加 --master-data 记录位点
依赖需额外安装并匹配版本官方自带,开箱即用
适用规模几十 GB 以上的大库中小库与临时导出
备份目录里的 metadata 文件记录了备份时刻的二进制日志位点与 GTID,重建从库、做时间点恢复都靠它;目录清理策略要保证它与数据文件同时保留,只有数据文件等于废备份。
无主键表无法拆分 chunk,会被串行导出甚至按版本策略跳过;备份完成后要核对目录中的文件数量与库内表数量,确认没有整表漏掉。

易错点

  • mydumper 版本与数据库版本不匹配:导出中断或结果不全,升级工具前必须先在预发验证
  • 无主键表被单线程导出甚至跳过:备份看起来成功,恢复时才发现缺表
  • 恢复时线程数开得比目标库承受能力还高:把新实例的 IO 打满,恢复更慢甚至超时失败
  • 只保留数据文件、丢掉 metadata:位点信息丢失,后续无法做时间点恢复
  • 备份目录与目标库字符集不一致:中文与特殊字符在恢复后出现乱码,需在建库前显式指定字符集

数据来源与参考

  • mydumper 官方文档: mydumper/myloader

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌