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

PostgreSQL 14.5执行pg_basebackup报错的原因排查与解决咨询

PostgreSQL 14.5 pg_basebackup 报错分析与解决

报错原因

  • 备份一致性依赖WAL日志:pg_basebackup执行时,先拷贝数据文件,同时需要持续读取WAL日志同步备份期间的数据库变化。若主库的WAL段在备份完成前被自动清理(比如触发checkpoint后回收、归档后删除),备份进程无法获取所需WAL段,就会抛出could not get COPY data stream并提示WAL段已移除。
  • 参数版本不兼容:PostgreSQL 14已废弃wal_keep_segments参数,改用wal_keep_size作为替代。直接添加wal_keep_segments会导致数据库启动失败,属于参数适配错误。

解决办法

1. 配置正确的WAL保留参数

  • 编辑PostgreSQL配置文件postgresql.conf,设置wal_keep_size为合适的值(例如wal_keep_size = 16GB,具体大小需根据备份时长、WAL生成速率调整,确保备份期间产生的WAL不会被清理)。
  • 重启PostgreSQL服务使配置生效。
  • 说明:wal_keep_size定义主库需要保留的WAL日志最小总大小,相比旧参数wal_keep_segments(按段数统计),按大小统计更灵活且适配新版本。

2. 重新执行备份命令

再次运行备份命令:

pg_basebackup -P -Xf -Ft -z -R

此时主库会保留足够的WAL段,确保备份过程能完整获取所需日志。

3. 长期备份优化方案(可选)

如果备份时长较长或WAL生成速率高,建议配置WAL归档:

  • 在postgresql.conf中设置archive_mode = on、archive_command(例如archive_command = 'cp %p /path/to/archive/%f',将WAL归档到指定目录)。
  • 配合备份命令的-X fetch参数,即使主库清理了WAL段,备份进程也能从归档中获取所需日志,进一步避免此类错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:16:03