关于pg_dump -j与-Z参数及PostgreSQL备份的问题咨询
PostgreSQL 备份配置相关问题
背景信息
- 需备份120GB的PostgreSQL数据库,此前通过PGADMIN备份因VPN断开失败,SQLMaestro备份因内存不足失败,计划在服务器端用
pg_dump执行备份。 - 拟用命令:
time pg_dump -j 5 -Fc -Z 1 db_profile_20210714 -f /var/lib/postgresql/backup2/(添加time用于计时),之后执行pg_dumpall -g。 - 服务器配置:30核CPU,备份磁盘挂载于NFS,运行Postgres 12与Ubuntu 12。
咨询问题
- 使用
-Z 0是否会取消-Fc格式的默认压缩?(已知-Fc默认带有压缩) - 同时使用
-j 5和-Z 1是否会产生反效果?有文章指出使用-Z 3至5可限制pg_dump进程以避免IO峰值,但若想同时利用多核与压缩,这种配置是否高效?
问题解答
问题1:-Z 0对-Fc默认压缩的影响
是的,-Z 0会完全取消-Fc格式的默认压缩。PostgreSQL中-Fc(自定义格式)默认采用中等压缩级别(近似-Z 6),而-Z参数会直接覆盖这个默认行为——指定-Z 0后,备份文件将以无压缩的原始数据格式存储。
问题2:-j 5与-Z 1的组合是否高效
不会产生反效果,且适配你的环境特性
- 参数作用逻辑:
-j是开启并行备份(启动5个工作进程同时读取数据),-Z 1是启用最低级别压缩——二者作用维度不同:并行参数负责提升数据读取效率,低级别压缩则以极小的CPU开销减少待写入的数据量。 - 针对NFS环境的适配性:
- NFS存储的核心瓶颈通常是IO带宽,
-Z 1的压缩CPU占用极低,能在几乎不消耗额外算力的前提下,降低写入NFS的数据量,反而缓解IO压力。 - 你的服务器有30核,
-j 5仅占用少量核心,加上-Z 1的微小开销后,CPU资源仍有大量富余,不会出现CPU抢占导致的性能下降。
- NFS存储的核心瓶颈通常是IO带宽,
- 关于
-Z 3-5的场景差异:文章提到的-Z 3-5方案,主要针对本地磁盘且CPU资源紧张的场景——较高压缩级别会占用更多CPU,间接限制pg_dump的进程速度,避免IO打满。但你的情况是CPU充足、存储为NFS,-Z 1+-j 5的组合更高效:既利用并行加快数据读取,又用低开销压缩减少NFS写入量,同时不浪费CPU资源。 - 实操建议:可先做小范围测试,对比
-Z 0+-j5和-Z1+-j5的备份时长、CPU占用、NFS写入速率,根据实际结果微调。另外,NFS挂载时的读写缓存、传输协议等参数也会影响备份速度,可同步检查优化。
内容的提问来源于stack exchange,提问作者padjee
相关产品推荐
相关产品推荐

