ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

postgres-backup-s3 部署完整教程:Docker Compose 一键搭建备份服务

postgres-backup-s3 部署完整教程:Docker Compose 一键搭建备份服务 postgres-backup-s3 部署完整教程Docker Compose 一键搭建备份服务【免费下载链接】postgres-backup-s3A handy Docker container to periodically backup PostgreSQL to S3项目地址: https://gitcode.com/gh_mirrors/po/postgres-backup-s3数据无价数据库定时备份是每位开发者的必修课。postgres-backup-s3 是一个开箱即用的 Docker 容器工具能够自动把 PostgreSQL 数据库备份到 AWS S3同时兼容 MinIO 等 S3 协议存储并支持一键恢复。本文带来 postgres-backup-s3 部署完整教程用 Docker Compose 一键搭建备份服务覆盖定时调度、加密、清理与恢复全流程新手也能轻松上手。postgres-backup-s3 是什么一个容器搞定备份与恢复postgres-backup-s3 用单个 Docker 镜像同时实现了「备份」和「恢复」两大核心能力备份时使用 pg_dump 生成自定义格式custom的压缩备份上传至 S3恢复时用 pg_restore 拉取远端备份并还原数据。整个过程无需在宿主机安装任何数据库客户端。✨ 核心亮点一览 支持 cron 定时调度轻松实现 PostgreSQL 定时备份到 S3 可选 GPG 口令加密备份文件安全上传 支持 BACKUP_KEEP_DAYS 自动清理过期备份♻️ 兼容 AWS S3 及 MinIO 等 S3 兼容存储 镜像按 PostgreSQL 主版本发布11~15版本选择灵活镜像内部由几个清晰的小脚本组成src/run.sh 负责入口与调度src/backup.sh 负责备份src/restore.sh 负责恢复src/env.sh 负责环境变量校验逻辑一目了然。部署前准备你需要这几样东西在开始搭建前先准备以下内容几分钟即可完成一台装有 Docker 与 Docker Compose 的服务器一个正在运行的 PostgreSQL 数据库AWS S3 存储桶或任意 S3 兼容存储并拿到 Access Key ID 与 Secret Access Key 小提示没有 AWS 账号也没关系MinIO、腾讯云 COS、阿里云 OSS 等 S3 兼容服务同样适用只需额外设置 S3_ENDPOINT 即可。最快配置方法Docker Compose 一键搭建备份服务最快的方式是直接使用项目自带的 docker-compose.yaml 编排文件。将 PostgreSQL 与备份容器放进同一个 Compose 服务组备份容器即可通过服务名访问数据库无需额外配置网络。services: postgres: image: postgres:14 environment: POSTGRES_USER: user POSTGRES_PASSWORD: password backup: image: eeshugerman/postgres-backup-s3:14 environment: SCHEDULE: daily # 每天备份一次 BACKUP_KEEP_DAYS: 7 # 保留 7 天自动清理更早的备份 S3_REGION: us-west-1 S3_ACCESS_KEY_ID: your-key S3_SECRET_ACCESS_KEY: your-secret S3_BUCKET: my-bucket S3_PREFIX: backup POSTGRES_HOST: postgres POSTGRES_DATABASE: mydb POSTGRES_USER: user POSTGRES_PASSWORD: password把上面的内容保存为 docker-compose.yaml 后执行一条命令即可启动docker compose up -d若想使用项目自带的 template.env 模板来管理密钥先复制再填充cp template.env .env docker compose up -d环境变量详解一份配置清单看懂所有参数postgres-backup-s3 的全部行为都由环境变量控制下表按「必填 / 可选」整理了一份配置清单。必填变量没有它们容器会直接报错变量作用S3_BUCKETS3 存储桶名称S3_REGION存储桶所在区域S3_ACCESS_KEY_ID访问密钥 IDS3_SECRET_ACCESS_KEY访问密钥 SecretPOSTGRES_HOSTPostgreSQL 主机地址或容器服务名POSTGRES_DATABASE要备份的数据库名POSTGRES_USER数据库用户名POSTGRES_PASSWORD数据库密码以上变量在 src/env.sh 中逐一校验缺失时容器会启动失败并给出明确提示方便排查。可选变量定时、加密、清理全靠它们变量作用示例SCHEDULE备份频率cron 表达式不填则备份一次后退出dailyBACKUP_KEEP_DAYS自动删除 N 天前的旧备份7PASSPHRASE设置后启用 GPG 加密备份my-secretS3_PREFIXS3 桶内的备份目录前缀backupS3_ENDPOINT非 AWS 的 S3 兼容服务地址https://minio.example.comPGDUMP_EXTRA_OPTS附加的 pg_dump 参数--no-owner定时备份怎么设SCHEDULE 调度规则速查SCHEDULE 是 postgres-backup-s3 最常用的可选参数它支持标准 cron 表达式与预设别名常见写法有daily每天执行一次备份weekly每周执行一次备份hourly每小时执行一次备份0 2 * * *每天凌晨 2 点执行自定义 cron调度由 src/run.sh 中的 go-cron 实现若留空 SCHEDULE容器会在启动时立即备份一次然后退出非常适合一次性备份场景。如何恢复备份一条命令还原 PostgreSQL 数据恢复同样简单只需进入备份容器执行一条命令docker exec 容器名 sh restore.sh该命令会自动在 S3 中找到该数据库的最新备份并还原。如需恢复到指定时间点把备份文件名中的时间戳作为参数传入即可docker exec 容器名 sh restore.sh 2026-08-17T07:00:00⚠️ 重要提醒恢复属于高危操作restore.sh 会先删除数据库中的全部对象再重建src/restore.sh 使用的是 --clean --if-exists 模式请务必先在测试环境演练避免数据丢失。手动触发一次备份不想等定时任务随时执行下面这条命令即可立即备份docker exec 容器名 sh backup.sh进阶技巧加密备份与 S3 兼容存储配置用 PASSPHRASE 给备份加把锁只要设置 PASSPHRASE 环境变量备份文件就会在上传前使用 GPG 对称加密文件名变为 .dump.gpg即使存储桶意外泄露数据也无法被直接读取。恢复时容器会用同一口令自动解密安全又省心。接入 MinIO 等 S3 兼容存储配置好 S3_ENDPOINT 后src/backup.sh 中的 aws 命令会自动加上 --endpoint-url 参数备份流程完全不变让私有化部署同样拥有云端级备份体验。常见问题排查容器启动报错「You need to set the S3_BUCKET」必填环境变量未设置对照上面的配置清单逐一检查。恢复的不是最新备份当存储桶内文件超过 1000 个时restore.sh 只执行一次 S3 列表查询可能取不到最新文件建议配合 BACKUP_KEEP_DAYS 定期清理。定时任务不执行确认 SCHEDULE 格式正确并查看容器日志确认 go-cron 已启动。总结postgres-backup-s3 把「PostgreSQL 备份到 S3」这件高频又繁琐的事压缩成了一个镜像、一份 Compose 配置。从 Docker Compose 一键搭建备份服务到定时调度、加密上传、自动清理与一键恢复全部开箱即用。如果你想在本地获取编排模板也可以 git clone https://gitcode.com/gh_mirrors/po/postgres-backup-s3 查看 docker-compose.yaml 与完整的脚本实现。现在就动手为你的 PostgreSQL 数据加一道安全保险吧【免费下载链接】postgres-backup-s3A handy Docker container to periodically backup PostgreSQL to S3项目地址: https://gitcode.com/gh_mirrors/po/postgres-backup-s3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表