MySQL Shell dump 工具是什么
MySQL Shell 8.0 内置 util.dumpSchemas / util.dumpInstance 逻辑备份工具,把 mysqldump 的思路升级为并行版本:多线程导出、zstd 压缩、可断点续传、附带一致性快照信息。恢复用 util.loadDump,同样多线程。它基于 X Protocol(默认 33060 端口),服务端需要启用 X Plugin,因此在老实例或部分云实例上不可用。
基本信息
| 备份 | util.dumpSchemas(["库名"], "/路径") |
|---|---|
| 恢复 | util.loadDump("/路径") |
| 连接方式 | 需要 X Protocol(默认端口 33060,服务端启用 mysqlx) |
| 特点 | 并行、zstd 压缩、断点续传、一致性保证 |
| 版本要求 | MySQL 8.0 起,源与目标版本跨度不能太大 |
典型使用场景
- 大库备份:单线程 mysqldump 太慢时,用并行导出缩短备份窗口
- 跨实例搬迁:8.0 到 8.0 之间搬库,比逻辑导出导入更省时间
- 云上迁移:源端支持 X Protocol 时可直接导出,无需在服务器上落中间文件
- 断点续传:网络中断后从已完成的块继续,不必整库重来
- 压缩存储:默认 zstd 压缩减小备份体积,适合长期留存
Shell 内执行
Shell 内执行
// 连接示例:mysqlsh root@localhost:33060
// 导出单个库,指定线程数与压缩,开启一致性快照
util.dumpSchemas(['appdb'], '/data/backup/dump_appdb', {
threads: 8,
compression: 'zstd',
consistent: true
});
// 恢复时同样指定线程数,目录不要手工改动
util.loadDump('/data/backup/dump_appdb', {threads: 8});与 mysqldump 对比
| 维度 | mysqldump | Shell dump 工具 |
|---|---|---|
| 并行度 | 单线程 | 多线程,按分块并行 |
| 压缩 | 需外部 gzip 管道 | 内置 zstd 选项 |
| 续传 | 不支持 | 支持从已完成分块继续 |
| 连接协议 | 经典协议 3306 | X Protocol 33060 |
| 版本兼容 | 较宽 | 源与目标版本跨度受限 |
dump 与 load 依赖 X Protocol。服务端未启用 X Plugin 时连接直接失败,先用 mysqlsh --sql 通过经典协议连一次,确认实例可达后再排查 X Protocol 端口与插件。
导出目录会包含分块文件与元数据 json,恢复时不要手工改文件名或目录结构,否则工具会因校验失败而拒绝加载。