mydumper 多线程逻辑备份
面向 MySQL/MariaDB 的多线程逻辑备份工具:按表并行导出,每张表生成独立的 SQL(可压缩)文件并附带 metadata 元数据,配套的 myloader 支持并行恢复。相比 mysqldump 的单线程串行,它在几百 GB 级别的逻辑备份上能把窗口压缩数倍,而且可以只挑几张表恢复。
基本信息
| 适用平台 | Linux;对 MySQL 5.7/8.0 与 MariaDB 的支持情况随版本不同 |
|---|---|
| 权限要求 | SELECT、LOCK TABLES、SHOW VIEW、TRIGGER、RELOAD、REPLICATION CLIENT 等 |
| 产物结构 | 每表一个 SQL/压缩文件,另有 metadata 记录位点与版本 |
| 常用参数 | -t 线程数、-c 压缩、-B 指定库、-G 触发器、-E 事件、-R 存储过程 |
典型使用场景
- 大库日常逻辑备份:多线程导出,控制在维护窗口内完成
- 单表恢复:备份目录里直接挑目标表文件,用 myloader 只导这一张
- 跨环境取数:把生产库导出恢复到测试环境,元数据保证可重复
- 迁移前留底:逻辑备份可读性好,便于人工核对对象数量
- 轻量级 PITR 准备:记录备份位点,配合 binlog 补齐变更
备份与恢复
备份与恢复
# 备份:4 线程压缩导出,包含触发器、事件与存储过程
mydumper -u root -p -B appdb -o /backup/appdb-2026-10-12 \
-t 4 -c -G -E -R --trx-consistency-only
# 查看产物:每表一个文件 + metadata
ls -lh /backup/appdb-2026-10-12 | head
# 恢复到新库(并行)
myloader -u root -p -B appdb_restore -d /backup/appdb-2026-10-12 -t 4
# 只恢复特定表
myloader -u root -p -B appdb_restore -d /backup/appdb-2026-10-12 \
-o -T appdb.orders,appdb.users参数选择
| 参数 | 作用 | 注意 |
|---|---|---|
| -t | 并行线程数 | 过高会给源库与磁盘带来明显压力 |
| -c | 压缩产物 | 省空间,恢复时多一步解压开销 |
| --trx-consistency-only | 只保证事务一致 | InnoDB 场景常用,非事务引擎表可能不一致 |
| -G/-E/-R | 包含触发器/事件/存储过程 | 漏掉会导致恢复后功能缺失 |
上线前核对 mydumper 版本与 MySQL 版本的兼容矩阵,避免导出对象缺失。锁策略参数(如 --less-locking)要按存储引擎选择,对繁忙实例使用默认配置可能产生锁等待。
备份目录里的 metadata 记录了导出时的位点信息与版本,是配合 binlog 做时间点恢复的依据,不要只留 SQL 文件而丢掉它;同时用它核对本次导出是否包含全部目标库表。