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 | ## 关闭 |
含义是:
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 | 较长 |
推荐:ZLIB 压缩导出
在 Windows CMD 或 PowerShell 中执行:
1 | "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqlpump.exe" ^ |
执行后生成:
1 | D:\mysql-backup\km_database.sql.zlib |
这里建议使用 --result-file,不要在 PowerShell 中写:
1 | mysqlpump ... > backup.zlib |
因为 Windows PowerShell 的输出重定向可能改变输出编码;官方也建议 Windows 使用 --result-file。
指定表并使用 LZ4 压缩
1 | "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqlpump.exe" ^ |
这条命令只导出:
1 | km_database.product_auto_task_data |
LZ4 和 ZLIB 都是 MySQL 5.7 mysqlpump 支持的输出压缩算法。
解压备份
MySQL 5.7.26 自带 zlib_decompress.exe:
1 | "C:\Program Files\MySQL\MySQL Server 5.7\bin\zlib_decompress.exe" ^ |
zlib_decompress 从 MySQL 5.7.10 开始提供,因此 5.7.26 可以使用。
导入恢复
1 | "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exe" ^ |
LZ4 方式
LZ4 一般压缩速度更快,也可以直接使用:
1 | mysqlpump.exe ^ |
解压:
1 | lz4_decompress.exe ^ |
因此,你这个版本优先使用:
1 | mysqlpump.exe + --compress-output=ZLIB + --result-file |
比 mysqldump + 7-Zip 更直接,不需要先生成未压缩的 SQL 文件。