
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
postgres-backup-s3是一个用于在PostgreSQL数据库与Amazon S3(或S3兼容存储)之间进行备份和恢复的Docker镜像。它支持定期自动备份、数据加密、自定义备份格式及压缩等功能,适用于需要可靠数据库备份策略的场景。
备份
sh$ docker run -e S3_ACCESS_KEY_ID=密钥 -e S3_SECRET_ACCESS_KEY=密钥 -e S3_BUCKET=我的存储桶 -e S3_PREFIX=备份 -e POSTGRES_DATABASE=数据库名 -e POSTGRES_USER=用户名 -e POSTGRES_PASSWORD=密码 -e POSTGRES_HOST=localhost itbm/postgres-backup-s3
恢复
sh$ docker run -e S3_ACCESS_KEY_ID=密钥 -e S3_SECRET_ACCESS_KEY=密钥 -e S3_BUCKET=我的存储桶 -e BACKUP_FILE=备份/数据库名_0000-00-00T00:00:00Z.sql.gz -e POSTGRES_DATABASE=数据库名 -e POSTGRES_USER=用户名 -e POSTGRES_PASSWORD=密码 -e POSTGRES_HOST=localhost -e CREATE_DATABASE=yes itbm/postgres-backup-s3
注意:当提供BACKUP_FILE环境变量时,容器会自动执行恢复过程而非备份。
yamlapiVersion: v1 kind: Namespace metadata: name: backup --- apiVersion: apps/v1 kind: Deployment metadata: name: postgresql namespace: backup spec: selector: matchLabels: app: postgresql strategy: type: Recreate template: metadata: labels: app: postgresql spec: containers: - name: postgresql image: docker.xuanyuan.run/itbm/postgresql-backup-s3 imagePullPolicy: Always env: - name: POSTGRES_DATABASE value: "" - name: POSTGRES_HOST value: "" - name: POSTGRES_PORT value: "" - name: POSTGRES_PASSWORD value: "" - name: POSTGRES_USER value: "" - name: S3_ACCESS_KEY_ID value: "" - name: S3_SECRET_ACCESS_KEY value: "" - name: S3_BUCKET value: "" - name: S3_ENDPOINT value: "" - name: S3_PREFIX value: "" - name: SCHEDULE value: ""
| 变量 | 默认值 | 是否必填 | 描述 |
|---|---|---|---|
| POSTGRES_DATABASE | 是 | 要备份/恢复的数据库,或使用'all'备份/恢复所有数据库 | |
| POSTGRES_HOST | 是 | PostgreSQL主机地址 | |
| POSTGRES_PORT | 5432 | 否 | PostgreSQL端口 |
| POSTGRES_USER | 是 | PostgreSQL用户名 | |
| POSTGRES_PASSWORD | 是 | PostgreSQL密码 | |
| POSTGRES_EXTRA_OPTS | 否 | 额外的PostgreSQL选项 | |
| S3_ACCESS_KEY_ID | 是 | AWS访问密钥 | |
| S3_SECRET_ACCESS_KEY | 是 | AWS密钥 | |
| S3_BUCKET | 是 | AWS S3存储桶路径 | |
| S3_PREFIX | backup | 否 | 存储桶中的路径前缀 |
| S3_REGION | us-west-1 | 否 | AWS S3存储桶区域 |
| S3_ENDPOINT | 否 | AWS端点URL,用于S3兼容API(如https://minio.io) | |
| S3_S3V4 | no | 否 | 设置为'yes'启用AWS Signature Version 4,https://minio.io服务器需要 |
| SCHEDULE | 否 | 备份调度时间,详见下文说明 | |
| ENCRYPTION_PASSWORD | 否 | 用于加密/解密备份的密码 | |
| DELETE_OLDER_THAN | 否 | 删除旧备份,详见下文说明和警告 | |
| USE_CUSTOM_FORMAT | no | 否 | 使用PostgreSQL自定义格式(-Fc)替代带压缩的纯文本格式 |
| COMPRESSION_CMD | gzip | 否 | 用于压缩备份的命令(如'pigz'用于并行压缩)- 当USE_CUSTOM_FORMAT=yes时忽略 |
| DECOMPRESSION_CMD | gunzip -c | 否 | 用于解压缩备份的命令(如'pigz -dc'用于并行解压缩)- 当USE_CUSTOM_FORMAT=yes时忽略 |
| PARALLEL_JOBS | 1 | 否 | 使用自定义格式备份时,pg_restore的并行作业数 |
| BACKUP_FILE | 是* | 恢复时必填。S3中的备份文件路径,格式:S3_PREFIX/文件名 | |
| CREATE_DATABASE | no | 否 | 恢复时:设置为'yes'以在数据库不存在时创建数据库 |
| DROP_DATABASE | no | 否 | 恢复时:设置为'yes'以在恢复前删除数据库(警告:会销毁现有数据)。需与CREATE_DATABASE=yes一起使用以重新创建数据库 |
可通过设置SCHEDULE环境变量实现自动定期备份,例如-e SCHEDULE="@daily"。
调度相关更多信息可参考http://godoc.org/github.com/robfig/cron#hdr-Predefined_schedules。
可通过设置DELETE_OLDER_THAN环境变量删除旧备份,例如-e DELETE_OLDER_THAN="30 days ago"。
警告:这将删除S3_PREFIX路径下的所有文件,不仅是本脚本创建的文件。
可通过设置ENCRYPTION_PASSWORD环境变量加密备份,例如-e ENCRYPTION_PASSWORD="超级强密码"。恢复过程会在ENCRYPTION_PASSWORD环境变量正确设置时自动检测并解密加密备份。也可使用openssl aes-256-cbc -d -in backup.sql.gz.enc -out backup.sql.gz手动解密。
有两种备份格式选项:
带压缩的纯文本格式(默认):
PostgreSQL自定义格式:
-e USE_CUSTOM_FORMAT=yes启用对于纯文本格式,备份默认使用gzip压缩。为在多核系统上提高性能,可使用pigz(并行gzip)替代:
sh$ docker run ... -e COMPRESSION_CMD=pigz ... itbm/postgres-backup-s3 $ docker run ... -e DECOMPRESSION_CMD="pigz -dc" ... itbm/postgres-backup-s3
使用自定义格式并进行并行恢复时:
sh$ docker run ... -e USE_CUSTOM_FORMAT=yes ... itbm/postgres-backup-s3 $ docker run ... -e PARALLEL_JOBS=4 -e BACKUP_FILE=backup/dbname_0000-00-00T00:00:00Z.dump ... itbm/postgres-backup-s3
注意:当使用POSTGRES_DATABASE=all时,自定义格式不可用,因为pg_dumpall不支持此格式。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 itbm/postgres-backup-s3 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: