本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
Docker PG Backup是一个轻量级Docker容器,专门用于执行PostgreSQL和PostGIS数据库的备份任务。它设计用于与kartoza/postgis镜像配合使用,默认配置为每晚23点自动执行备份,并将备份文件按年/月层级目录结构组织存储,便于管理和追溯。
docker pull kartoza/pg-backup:latest docker pull kartoza/pg-backup:${VERSION} # 例如 VERSION=13.0
重要:强烈建议使用与目标PostgreSQL镜像版本匹配的标签(如使用13.0版本备份kartoza/postgis:13.0数据库)。
latest标签可能会变更,可能导致备份失败。
若需自行构建(会消耗更多带宽,需每次拉取依赖包):
git clone [***] cd docker-pg-backup ./build.sh # 构建最新版本
docker run --name="backups" --hostname="pg-backups" --link db1:db -v backups:/backups -i -d kartoza/pg-backup:13.0
参数说明:
--link db1:db:连接到名为db1的数据库容器(别名db)-v backups:/backups:挂载本地卷backups到容器内/backups目录,用于存储备份文件--name="backups":指定容器名称--hostname="pg-backups":设置容器主机名通过环境变量可自定义数据库连接参数、备份策略等,常用变量如下:
| 环境变量 | 默认值 | 说明 |
|---|---|---|
| POSTGRES_USER | docker | 数据库连接用户名 |
| POSTGRES_PASS | docker | 数据库连接密码 |
| POSTGRES_PORT | 5432 | 数据库端口 |
| POSTGRES_HOST | db | 数据库主机名(通常为链接的数据库容器别名) |
| POSTGRES_DBNAME | gis | 默认数据库名(当未指定DBLIST时使用) |
| ARCHIVE_FILENAME | 空 | 自定义备份文件名格式,为空时使用默认格式 |
| DBLIST | 空 | 空格分隔的数据库列表(如gis postgres),默认备份所有数据库 |
| REMOVE_BEFORE | 空 | 保留最近N天的备份,删除更早的备份(如30保留30天内备份) |
| DUMP_ARGS | -Fc | pg_dump参数,默认生成压缩备份(-Fc为自定义格式) |
| RESTORE_ARGS | -j 4 | pg_restore参数,默认4个并行任务 |
| STORAGE_BACKEND | FILE | 存储后端,可选FILE(本地)或s3(S3兼容存储) |
| DB_TABLES | 空 | 设置为yes时,将数据库中所有表分别导出为独立备份 |
docker run -e POSTGRES_USER=bob -e POSTGRES_PASS=secret -e REMOVE_BEFORE=7 --link db:db -v backups:/backups -d kartoza/pg-backup:13.0
未指定ARCHIVE_FILENAME时,备份文件路径格式为:
/backups/$(date +%Y)/$(date +%B)/${DUMPPREFIX}_${DB}.$(date +%d-%B-%Y).dmp
示例(DUMPPREFIX=PG,数据库名gis):
/backups/2019/February/PG_gis.13-February-2019.dmp
指定ARCHIVE_FILENAME时,将使用固定前缀命名,示例(ARCHIVE_FILENAME=/backups/latest):
/backups/latest.gis.dmp
支持将备份文件存储到S3兼容对象存储,需配置以下环境变量:
| 环境变量 | 说明 |
|---|---|
| ACCESS_KEY_ID | S3访问密钥ID |
| SECRET_ACCESS_KEY | S3密钥 |
| DEFAULT_REGION | 默认区域(默认:us-west-2) |
| HOST_BASE | S3服务地址(如MinIO的地址) |
| HOST_BUCKET | S3桶地址格式 |
| SSL_SECURE | 是否启用SSL(默认:True) |
| EXTRA_CONF | 额外s3cmd配置内容 |
| BUCKET | 目标存储桶名称(默认:backups) |
完整配置示例可参考项目仓库中的
docker-compose-s3.yml文件
使用配套的restore.sh脚本执行恢复操作,需预先设置以下环境变量:
| 环境变量 | 说明 |
|---|---|
| TARGET_DB | 目标数据库名称 |
| WITH_POSTGIS | 是否生成PostGIS扩展(kartoza特定配置) |
| TARGET_ARCHIVE | 备份文件完整路径 |
警告:恢复脚本会删除与
TARGET_DB同名的现有数据库,请谨慎操作。建议恢复到新数据库(如gis_restore),验证后再手动替换原数据库。
通过docker-compose执行恢复:
docker-compose exec dbbackup /backup-scripts/restore.sh
version: '3' services: dbbackup: image: kartoza/pg-backup:13.0 container_name: backups hostname: pg-backups links: - db:db volumes: - backups:/backups environment: - POSTGRES_USER=postgres - POSTGRES_PASS=securepassword - POSTGRES_DBNAME=gis - REMOVE_BEFORE=30 - DUMPPREFIX=prod_backup restart: unless-stopped db: image: kartoza/postgis:13.0 environment: - POSTGRES_USER=postgres - POSTGRES_PASS=securepassword - POSTGRES_DB=gis volumes: - pgdata:/var/lib/postgresql/data volumes: backups: pgdata:
Tim Sutton ()
Admire Nyakudya ()
Rizky Maulana (***)
December 2020
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429