260801-mysqldump-GZIP压缩导出-ZLIB-LZ4(mysqlpump&mysql)5.7.26-压缩导出-md
Created At : 2026-08-01 09:18
推荐的生产环境写法 1 2 3 4 5 6 7 8 9 mysqldump -h 127.0.0.1 -P 3306 -u root -p \ --single-transaction \ --quick \ --routines \ --triggers \ --events \ --default-character-set=utf8mb4 \ --databases mydb \ | gzip -9 > /backup/mydb_$(date +%Y%m%d_%H%M%S).sql.gz
说明:
--single-transaction:对 InnoDB 做一致性备份,尽量不锁表。
--quick:大表逐行读取,减少内存占用。
--routines --triggers --events:同时导出存储过程、触发器、事件。
--default-character-set=utf8mb4:避免中文乱码。
gzip -9:最高压缩级别,速度会慢一些;想快可以用 gzip -1。
如果系统有 pigz,可以并行压缩,速度更快:
MySQL 5.7.26 可以直接使用官方自带的 mysqlpump.exe 压缩导出。它支持 ZLIB 和 LZ4 两种压缩算法。
案例
服务端执行,解决异常问题
mysqlpump: [WARNING] (13) Can’t get stat of ‘.\mysql\general_log.CSV’ (Errcode: 2 - No such file or directory) mysqlpump: [ERROR] (13) Can’t get stat of ‘.\mysql\general_log.CSV’ (Errcode: 2 - No such file or directory)
1 2 3 4 5 6 7 8 9 10 11 12 ## 关闭 SET GLOBAL general_log=OFF; SET GLOBAL slow_query_log=OFF; SET GLOBAL log_output='FILE'; SELECT @@GLOBAL.general_log, @@GLOBAL.log_output, @@GLOBAL.slow_query_log; ## 生产环境可以保持 SET GLOBAL general_log = OFF; SET GLOBAL log_output = 'FILE'; SET GLOBAL slow_query_log = ON;
含义是:
general_log = OFF:关闭所有 SQL 通用日志,避免日志量巨大和性能下降。
log_output = FILE:日志写到文件,不写入损坏的系统 CSV 表。
slow_query_log = ON:保留慢查询日志,用于排查慢 SQL。
这是比较合理的生产配置,无须为了导出结束而恢复成 TABLE。
算法文件对比 假设原始 SQL 文件为 10 GB ,实际结果可能类似:
算法
可能的压缩大小
导出压缩耗时
LZ4
3~5 GB
较短
ZLIB
2~4 GB
较长
1 mysqlpump.exe --no-defaults -h 127.0.0.1 -P 3306 -u root --password --single-transaction --default-character-set=utf8mb4 --compress-output=LZ4 --result-file="C:\mysql-backup\km_tables.sql.lz4" ry-vue km_table
推荐:ZLIB 压缩导出 在 Windows CMD 或 PowerShell 中执行:
1 2 3 4 5 6 7 8 9 10 "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqlpump.exe" ^ -h 127.0.0.1 ^ -P 3306 ^ -u root ^ -p ^ --single-transaction ^ --default-character-set=utf8mb4 ^ --compress-output=ZLIB ^ --result-file="C:\mysql-backup\ry-vue.sql.zlib" ^ ry-vue
执行后生成:
1 C:\mysql-backup\ry-vue.sql.zlib
这里建议使用 --result-file,不要在 PowerShell 中写:
1 mysqlpump ... > backup.zlib
因为 Windows PowerShell 的输出重定向可能改变输出编码;官方也建议 Windows 使用 --result-file。
指定表并使用 LZ4 压缩 1 2 3 4 5 6 7 8 9 10 11 12 13 "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqlpump.exe" ^ -h 127.0.0.1 ^ -P 3306 ^ -u root ^ -p ^ --single-transaction ^ --default-character-set=utf8mb4 ^ --compress-output=LZ4 ^ --result-file="C:\mysql-backup\km_tables.sql.lz4" ^ ry-vue ^ product_auto_task_data ^ product_auto_task_data_detail ^ km_device
这条命令只导出:
1 2 3 ry-vue.product_auto_task_data ry-vue.product_auto_task_data_detail ry-vue.km_device
LZ4 和 ZLIB 都是 MySQL 5.7 mysqlpump 支持的输出压缩算法。
解压备份 MySQL 5.7.26 自带 zlib_decompress.exe:
1 2 3 4 5 "C:\Program Files\MySQL\MySQL Server 5.7\bin\zlib_decompress.exe" ^ "C:\mysql-backup\ry-vue.sql.zlib" ^ "C:\mysql-backup\ry-vue.sql" zlib_decompress.exe C:\mysql-backup\ry-vue_20260904.zlib C:\mysql-backup\ry-vue_20260904.sql
zlib_decompress 从 MySQL 5.7.10 开始提供,因此 5.7.26 可以使用。
导入恢复 1 2 3 4 5 6 7 8 9 10 11 12 13 14 "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exe" ^ -h 127.0.0.1 ^ -P 3306 ^ -u root ^ -p ^ --default-character-set=utf8mb4 ^ ry-vue ^ < "C:\mysql-backup\km_tables.sql" mysql.exe -h 127.0.0.1 -P 3306 -u root -p --default-character-set=utf8mb4 ry-vue < "C:\mysql-backup\km_tables.sql" mysql.exe -h 127.0.0.1 -P 3306 -u root -p --default-character-set=utf8mb4 ry-vue < "C:\mysql-backup\km_tables.sql" mysql.exe -h 127.0.0.1 -P 3306 -u root -p --default-character-set=utf8mb4 ry-vue < "C:\mysql-backup\km_tables_202608.sql" mysql.exe -h 127.0.0.1 -P 3306 -u root -p --default-character-set=utf8mb4 ry-vue < "C:\mysql-backup\production_data_202608_10.sql" mysql.exe -h 127.0.0.1 -P 3306 -u root -p --default-character-set=utf8mb4 ry-vue < "C:\mysql-backup\production_data_202608_10.sql"
LZ4 方式 LZ4 一般压缩速度更快,也可以直接使用:
1 2 3 4 5 6 7 8 9 mysqlpump.exe ^ -u root ^ -p ^ --single-transaction ^ --compress-output=LZ4 ^ --result-file="C:\mysql-backup\ry-vue.sql.lz4" ^ ry-vue mysqlpump.exe -u root -p --single-transaction --compress-output=LZ4 --result-file="C:\mysql-backup\ry-vue.sql.lz4" ry-vue
解压:
1 2 3 4 5 6 lz4_decompress.exe ^ "C:\mysql-backup\ry-vue.sql.lz4" ^ "C:\mysql-backup\ry-vue.sql" lz4_decompress.exe "C:\mysql-backup\km_tables.sql.lz4" "C:\mysql-backup\km_tables.sql" lz4_decompress.exe "C:\mysql-backup\production_data_202608.sql.lz4" "C:\mysql-backup\production_data_202608.sql"
因此,你这个版本优先使用:
1 mysqlpump.exe + --compress-output=ZLIB + --result-file
比 mysqldump + 7-Zip 更直接,不需要先生成未压缩的 SQL 文件。