本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

本镜像是一个在 Docker 环境中使用 pg_upgrade 工具进行 PostgreSQL 版本升级的概念验证(PoC)实现。其核心用途是协助用户在 Docker 容器化环境中,将 PostgreSQL 数据库从当前版本(OLD)升级到目标版本(NEW)。注意:此镜像为概念验证工具,需根据实际需求进行适配和测试,不可直接用于生产环境。
镜像源码可参考:[***]
镜像标签遵循 OLD-to-NEW 格式,其中:
OLD:当前运行的 PostgreSQL 版本(如 9.4)NEW:目标升级的 PostgreSQL 版本(如 9.5)支持通过 --link 参数启用链接模式,避免数据复制,直接创建新旧数据目录的硬链接,显著提升升级性能(具体原理参见 pg_upgrade 文档)。
提供两种目录结构适配方案:
--link 模式(高性能)pg_upgrade 工具的环境配置和依赖管理OLD 和 NEW 版本的兼容性(参考 PostgreSQL 官方升级说明)--link)数据目录需满足以下层级结构,其中 DIR 为宿主机根目录,OLD 和 NEW 分别为当前和目标 PostgreSQL 版本:
$ find DIR -mindepth 2 -maxdepth 2 DIR/OLD/data # 旧版本数据目录 DIR/NEW/data # 新版本数据目录(需提前创建空目录)
$ docker run --rm \ -v DIR:/var/lib/postgresql \ # 挂载宿主机根目录到容器内 /var/lib/postgresql tianon/postgres-upgrade:OLD-to-NEW \ # 指定镜像标签(OLD-to-NEW) --link # 启用链接模式(提升性能)
假设:
OLD=9.4,新版本 NEW=9.5DIR=/mnt/bigdrive/postgresql$ find /mnt/bigdrive/postgresql -mindepth 2 -maxdepth 2 /mnt/bigdrive/postgresql/9.4/data # 旧版本数据目录(原 postgres:9.4 容器挂载路径) /mnt/bigdrive/postgresql/9.5/data # 新版本数据目录(为空目录,供 postgres:9.5 使用)
$ docker run --rm \ -v /mnt/bigdrive/postgresql:/var/lib/postgresql \ tianon/postgres-upgrade:9.4-to-9.5 \ --link
--link)直接挂载旧版本数据目录(PGDATAOLD)和新版本数据目录(PGDATANEW),无需特定层级关系。
$ docker run --rm \ -v PGDATAOLD:/var/lib/postgresql/OLD/data \ # 挂载旧版本数据目录 -v PGDATANEW:/var/lib/postgresql/NEW/data \ # 挂载新版本数据目录(需为空) tianon/postgres-upgrade:OLD-to-NEW # 不使用 --link 参数
假设:
PGDATAOLD=/mnt/bigdrive/postgresql-9.4PGDATANEW=/mnt/bigdrive/postgresql-9.5执行升级:
$ docker run --rm \ -v /mnt/bigdrive/postgresql-9.4:/var/lib/postgresql/9.4/data \ -v /mnt/bigdrive/postgresql-9.5:/var/lib/postgresql/9.5/data \ tianon/postgres-upgrade:9.4-to-9.5
# 创建工作目录 $ mkdir -p postgres-upgrade-testing && cd postgres-upgrade-testing # 定义版本和目录变量 $ OLD='9.4' $ NEW='9.5'
# 拉取旧版本镜像 $ docker pull "postgres:$OLD" # 启动旧版本容器(挂载数据目录) $ docker run -dit \ --name postgres-upgrade-testing \ -v "$PWD/$OLD/data:/var/lib/postgresql/data" \ "postgres:$OLD" # 等待容器启动(约5秒) $ sleep 5 # 查看容器日志确认启动成功 $ docker logs --tail 100 postgres-upgrade-testing # 生成测试数据(使用 pgbench) $ docker exec -it \ -u postgres \ postgres-upgrade-testing \ pgbench -i -s 10
# 停止旧版本容器 $ docker stop postgres-upgrade-testing && docker rm postgres-upgrade-testing # 运行升级容器(使用推荐方法,--link 模式) $ docker run --rm \ -v "$PWD":/var/lib/postgresql \ "tianon/postgres-upgrade:$OLD-to-$NEW" \ --link
# 拉取新版本镜像 $ docker pull "postgres:$NEW" # 启动新版本容器(挂载升级后的新数据目录) $ docker run -dit \ --name postgres-upgrade-testing \ -v "$PWD/$NEW/data:/var/lib/postgresql/data" \ "postgres:$NEW" # 等待容器启动并查看日志确认成功 $ sleep 5 && docker logs --tail 100 postgres-upgrade-testing
$ sudo rm -rf "$OLD"
psql 或应用验证数据完整性和功能正常性。免费版仅支持 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