使用 MySQL Shell 并行导出/加载(util.dumpInstance、loadDump)
MySQL备份与 PITR命令
# Parallel, zstd-compressed, consistent instance dump
mysqlsh backup@db1:3306 -- util dump-instance /backup/dump_20261008 --threads=8 --compression=zstd --consistent=true
# Single schema
mysqlsh backup@db1:3306 -- util dump-schemas shop --outputUrl=/backup/shop_20261008 --threads=8
# Load: local_infile must be temporarily ON on the target
mysql -h db2 -u root -p -e "SET GLOBAL local_infile = ON"
mysqlsh root@db2:3306 -- util load-dump /backup/dump_20261008 --threads=8 --skipBinlog=false
mysql -h db2 -u root -p -e "SET GLOBAL local_infile = OFF"作用
将表拆分为多个块并用多线程导出/加载;导出和还原都比 mysqldump 快很多倍。导出目录在 @.json 中保存 GTID 和 binlog 坐标。
适用场景
用于数百 GB 的逻辑备份、升级期间的逻辑迁移,以及本地 → 云(RDS、HeatWave)迁移。
注意
--consistent=true 会短暂获取全局读锁/备份锁;如果有长查询在运行,写入会等待。loadDump 使用 LOAD DATA LOCAL,因此目标需要 local_infile=ON,之后应将其关闭。中断的加载会从停止处继续(进度文件);使用 --resetProgress 重新开始。默认不加载用户账户(--loadUsers=true)。--skipBinlog=true 在加载期间禁用 binlog;如果目标有副本,请保持为 false。