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

如何备份运行在远程Docker容器中的PostgreSQL数据库?

备份远程PostgreSQL数据库的可行方案

方案1:直接在容器内执行备份并推送至S3

无需在本地安装pg_dump,直接通过容器命令完成备份+上传:

  • 利用管道直接将pg_dump输出传到S3(前提是本地已配置好AWS CLI):
    docker exec <postgres容器名/ID> pg_dump -U <用户名> -d <数据库名> | aws s3 cp - s3://<你的存储桶路径>/backup-$(date +%Y%m%d%H%M%S).sql
    
  • 若不想依赖本地AWS CLI,可在容器内安装AWS工具后执行:
    docker exec <postgres容器名/ID> sh -c "pg_dump -U <用户名> -d <数据库名> > /tmp/backup.sql && aws s3 cp /tmp/backup.sql s3://<你的存储桶路径>/backup-$(date +%Y%m%d%H%M%S).sql && rm /tmp/backup.sql"
    
  • 定时任务:将上述命令加入本地crontab(Linux/macOS)或Windows任务计划,设置每日/每周执行。

方案2:单独安装pg_dump客户端(无需完整数据库)

多数系统支持单独安装PostgreSQL客户端工具,不用装完整数据库:

  • Debian/Ubuntu系统:
    sudo apt-get install postgresql-client
    
  • RHEL/CentOS系统:
    sudo yum install postgresql-client
    
  • 安装完成后直接远程备份并传S3:
    pg_dump -h <远程主机IP/域名> -U <用户名> -p <端口> -d <数据库名> | aws s3 cp - s3://<你的存储桶路径>/backup-$(date +%Y%m%d%H%M%S).sql
    
  • 定时执行同上,用crontab或任务计划配置。

方案3:用轻量容器封装pg_dump+AWS CLI

构建仅包含备份工具的轻量容器,避免本地依赖:

  1. 创建Dockerfile:
    FROM alpine:latest
    RUN apk add --no-cache postgresql-client aws-cli
    
  2. 构建镜像:
    docker build -t pg-backup .
    
  3. 执行备份(通过环境变量传入连接信息和凭证):
    docker run --rm \
      -e PGHOST=<远程主机IP/域名> \
      -e PGUSER=<用户名> \
      -e PGPASSWORD=<密码> \
      -e PGDATABASE=<数据库名> \
      -e AWS_ACCESS_KEY_ID=<你的AWS密钥ID> \
      -e AWS_SECRET_ACCESS_KEY=<你的AWS密钥> \
      pg-backup sh -c "pg_dump | aws s3 cp - s3://<你的存储桶路径>/backup-$(date +%Y%m%d%H%M%S).sql"
    
  4. 定时任务:将上述docker run命令加入crontab。

方案4:集群级备份(pg_dumpall)

若需备份整个PostgreSQL集群,替换pg_dump为pg_dumpall即可:

docker exec <postgres容器名/ID> pg_dumpall -U <用户名> | aws s3 cp - s3://<你的存储桶路径>/full-backup-$(date +%Y%m%d%H%M%S).sql

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:47:07