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

PostgreSQL容器实现WAL归档增量备份遇权限问题求助

解决PostgreSQL容器WAL归档权限问题(无需修改基础镜像)

方案1:挂载到PostgreSQL默认有权限的目录

官方PostgreSQL基础镜像中,postgres用户默认对/var/lib/postgresql目录拥有写入权限(这是镜像预设的用户主目录及数据目录所在路径)。你可以将宿主机的备份目录挂载到该路径下的子目录,而非/var/backups:

  1. 启动容器时调整挂载路径:
docker run -v /宿主机的备份目录:/var/lib/postgresql/backups [其他postgres镜像参数]
  1. 修改postgresql.conf中的archive_command,将归档路径指向这个有权限的目录:
archive_command ='DIR="/var/lib/postgresql/backups/$(date +%Y%m%d)-wal"; (test -d "$DIR" || mkdir -p "$DIR") && gzip < "%p" > "$DIR/%f.gz"'

方案2:调整宿主机备份目录的权限

官方PostgreSQL镜像中postgres用户的UID固定为999,你可以在宿主机上直接修改备份目录的权限,让容器内的postgres用户拥有写入权限,无需修改镜像:

  1. 在宿主机执行权限修改命令:
chown 999:999 /宿主机的备份目录
  1. 保持原挂载路径(/var/backups)和archive_command不变,重新启动容器后,postgres用户即可正常写入归档文件。

注意事项

  • 避免使用/tmp目录存储归档文件:虽然postgres用户对其有写入权限,但容器重启后/tmp会被清空,导致备份丢失。
  • 若使用Docker Compose,只需在volumes配置中对应调整挂载路径,或提前在宿主机设置好目录权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:53:25