You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同时运行pg_dump与pg_basebackup是否安全?PostgreSQL崩溃问题问询

PostgreSQL并发执行pg_basebackup与pg_dump导致崩溃的问题解答

是否属于预期风险?

PostgreSQL本身并未禁止同时运行pg_basebackup(物理备份)和pg_dump(逻辑备份),正常场景下二者可以共存执行。但在特定条件下——比如共享内存配置不足、系统硬件内存故障、或者特定PostgreSQL版本的边缘场景bug——可能触发Bus error导致服务崩溃,这不属于预期的常规风险,更偏向于异常场景下的问题。

Bus error的核心诱因通常是:

  • 物理内存硬件故障或非法内存访问
  • 共享内存资源竞争引发的内存对齐问题或非法引用
  • 旧版本PostgreSQL的已知bug

可实施的防护机制

1. 优化共享内存配置

检查并调整PostgreSQL的核心内存参数,避免资源竞争:

  • shared_buffers:建议设置为物理内存的1/4(最大不超过8GB)
  • maintenance_work_mem:调大该值以支持备份类操作的内存需求(比如设置为64MB-2GB,根据服务器内存规模调整)
  • work_mem:避免设置过大导致并发操作时内存耗尽

可通过以下命令查看当前配置:

SELECT name, setting, unit FROM pg_settings WHERE name IN ('shared_buffers', 'maintenance_work_mem', 'work_mem');

2. 错开备份时间

最直接有效的方式:将物理备份(pg_basebackup)和逻辑备份(pg_dump)的执行时间完全错开,避免资源重叠竞争。

3. 限制备份工具的资源占用

  • 对pg_dump:若使用并行导出,通过--jobs=N控制并行任务数,避免占用过多CPU和内存;非必要场景不要使用--no-synchronized-snapshots(会破坏备份一致性)。
  • 对pg_basebackup:使用--max-rate=RATE限制备份的IO速率,降低对磁盘和系统资源的冲击。

4. 升级PostgreSQL版本

某些旧版本的PostgreSQL存在并发备份相关的共享内存bug,升级到最新稳定版本(如15.x、16.x系列)可修复已知问题。

5. 排查系统硬件与环境

  • 运行内存检测工具(如memtest86+)确认无物理内存故障
  • 查看系统日志(如dmesg、/var/log/syslog),排查是否有硬件层面的内存报错
  • 确保系统内存对齐设置符合PostgreSQL的运行要求

额外提示

如果在排除硬件问题后仍能稳定复现崩溃,建议在测试环境复现并收集详细日志,向PostgreSQL社区提交bug报告,帮助修复潜在的边缘场景问题。

内容的提问来源于stack exchange,提问作者Alexi Theodore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 22:01:06