mysqlpump 是什么
mysqlpump 是 MySQL 5.7 起随服务端提供的并行逻辑备份工具:它把导出任务按库、表等对象拆成多个队列,多线程同时导出,吞吐明显优于单线程的 mysqldump,并能直接输出压缩文件,产物是标准 SQL 文本,用 mysql 客户端回放即可恢复。MySQL 8.0.34 起该工具被标记为弃用,官方建议新体系转向替代工具链。
基本信息
| 适用平台 | MySQL 5.7 与 8.0(8.0.34 起弃用) |
|---|---|
| 语法 | mysqlpump [选项] > 输出.sql |
| 并行度 | --default-parallelism=N 指定默认并行队列数 |
| 对象附加 | --users 账号、--routines 存储过程、--events 事件(默认不导出) |
| 范围控制 | --include-databases、--exclude-databases、--exclude-tables |
| 压缩输出 | --compress-output 支持指定压缩算法 |
| 产物 | SQL 文本,必须用 mysql 客户端回放,不是物理备份 |
典型使用场景
- 大实例整库导出:多线程摊薄导出时间,比 mysqldump 更省窗口
- 只导部分库或排除超大的日志表,控制产物体积
- 搬库到新实例时带上账号、存储过程与事件对象
- 产物需要直接压缩落盘,减少中间文件占空间
- 与 mysqldump 做同环境对照测试,评估并行带来的实际收益
并行导出
并行导出
# 并行 4 线程导出全库,含账号、存储过程与事件
mysqlpump --default-parallelism=4 --single-transaction --users --routines --events -u root -p --all-databases > all-pump.sql
# 只导一个库,并排除超大日志表
mysqlpump --include-databases=appdb --exclude-tables=appdb.logs -u root -p > appdb.sql
# 直接输出压缩文件(算法以本机版本支持为准)
mysqlpump --compress-output=LZ4 -u root -p --all-databases > all.sql.lz4
# 恢复:先解压再回放
lz4 -d all.sql.lz4 all.sql && mysql -u root -p < all.sql
# 导出后核对产物关键字,确认对象类型都在
grep -c 'CREATE TABLE' all-pump.sql关键参数读法
| 参数 | 作用 | 注意 |
|---|---|---|
| --default-parallelism | 默认并行队列数 | 调太大反而争抢 IO 与锁,收益递减 |
| --single-transaction | 一致性快照导出 | 与并行组合时的一致性边界需按官方文档确认 |
| --users/--routines/--events | 附加导出账号、过程、事件 | 默认不含,漏了会导致新实例缺对象 |
| --exclude-tables | 排除指定表 | 名称要精确,导出后回查确认真的排除了 |
| --compress-output | 压缩输出 | 需相应解压工具,回放前必须先解压 |
弃用意味着后续大版本可能移除,新建备份体系不要再把 mysqlpump 作为主链路,选型时直接评估替代工具的并行导出与一致性能力。
逻辑导出与物理备份的取舍:逻辑导出便于跨版本与选择性恢复,但超大库的恢复耗时远高于物理备份,RTO 敏感的实例应以物理备份为主、逻辑导出为辅。