mysqlpump 默认不并行,--default-parallelism 默认为0;需显式指定线程数才能启用并行导出,仅表结构和表数据支持并行,其余对象如函数、用户权限等仍串行处理。

mysqlpump 默认不并行,必须显式指定线程数
mysqlpump 不像 mysqldump 那样默认单线程跑完,但它也不会自动开多线程——哪怕你机器有 32 核,它照样只用 1 个线程,除非你告诉它“给我并发”。关键参数是 --default-parallelism 和更细粒度的 --parallel-schemas。
常见错误现象:mysqlpump --user=root test 跑起来 CPU 占用始终在 100% 单核,备份时间跟 mysqldump 差不多,误以为“并行没生效”其实是根本没启用。
-
--default-parallelism=N:对每个数据库内可并行的对象(表、视图等)最多启用 N 个线程,N=0 表示禁用并行(默认值就是 0) -
--parallel-schemas=N:schema1,schema2:只为指定库开启并行,且单独设线程数,比如--parallel-schemas=4:myapp,logdb - 线程数不是越多越好:超过物理核心数后,I/O 竞争反而拖慢整体速度;SSD 上建议 ≤ 8,HDD 上 ≤ 4 更稳妥
哪些对象能真正并行导出?不是所有结构都支持
mysqlpump 的并行逻辑基于“对象类型是否可独立导出”,不是所有 SQL 语句都能拆开跑。它把一个库里的对象分组:表数据、表结构、视图、存储过程、触发器……其中只有 表数据(INSERT 语句)和表结构(CREATE TABLE)能跨表并行,其余如函数、事件、用户权限等仍串行处理。
使用场景:如果你的库有 200 张小表,但含大量存储过程和自定义函数,开启 --default-parallelism=6 后,实际并发的只有表部分,其他阶段仍卡住主线程。
- 能并行:每张表的
CREATE TABLE+ 对应的INSERT数据块(按 chunk 分片) - 不能并行:
CREATE FUNCTION、CREATE USER、GRANT、CREATE EVENT等全局对象 - 注意
--skip-definer:如果大量视图/函数带DEFINER,不跳过会导致权限检查阻塞,并行效果打折扣
备份大表时容易 OOM 或锁表,得配合参数压内存、避锁
mysqlpump 并行读取大表时,默认会把整张表的 INSERT 拆成多批次,但若单次 batch 过大或并发太高,客户端内存飙升,甚至触发 Killed;同时某些隔离级别下可能引发元数据锁(MDL),阻塞线上 DDL。
典型错误信息:Killed(进程被系统 kill)、Lock wait timeout exceeded(备份期间 ALTER TABLE 失败)。
-
--chunk-size=1000000:控制每批 INSERT 行数,降低单线程内存压力(默认 1M,超大表可降到 500000) -
--single-transaction:必须加!保证一致性快照,避免全表锁;但注意它只对 InnoDB 有效,MyISAM 仍会锁表 -
--skip-triggers或--skip-routines:如果不需要这些对象,跳过能显著减少串行阶段耗时和内存占用
恢复时要注意 mysqlpump 输出的 SQL 不兼容老版本 MySQL
mysqlpump 是 MySQL 5.7.8+ 引入的工具,生成的 SQL 默认用新语法(比如 CREATE OR REPLACE VIEW、带 ALGORITHM 的视图定义),在 MySQL 5.6 或 MariaDB 上直接 source 会报错。
常见错误现象:ERROR 1064 (42000) 指向某行 CREATE OR REPLACE VIEW,或者 Unknown column 'xxx' in 'field list' 因字段别名解析差异。
-
--compatibility=mysql40,postgresql:可用逗号分隔多个目标兼容模式,例如--compatibility=mysql56会降级语法 -
--set-gtid-purged=OFF:如果目标库没开 GTID,不加这个会插入SET @@GLOBAL.GTID_PURGED导致失败 - 输出文件里带
/*!50708 SET NAMES utf8mb4 */这类条件注释,旧版本 MySQL 会忽略,但需确认字符集设置是否真被继承
并行备份不是开个参数就万事大吉的事,线程数、对象类型、大表策略、目标环境兼容性这四点漏掉任何一环,都可能让备份变慢、失败或不可恢复。特别是 --default-parallelism=0 这个默认值,很多人查文档没注意,配了半天还是单线程。










