docker操作Postgres11升级Postgres13实践

 更新时间:2026年06月23日 14:43:55   作者:技术嘭嘭嘭  
这篇文章主要介绍了docker操作Postgres11升级Postgres13实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

操作docker

下载Postgres13的镜像,目前latest是13.3

docker search postgres
docker pull postgres
  • 下载好镜像根据自己的习惯进行管理
  • 设置镜像为东八区
  • 打上对应版本的tag
  • 重命名Image

  • 启动容器
docker run --name postgres \
--network backend \
--restart=always \
-e POSTGRES_USER=用户名 \
-e POSTGRES_PASSWORD=密码 \
-p 5432:5432 \
-v /opt/docker/宿主机路径:/var/lib/postgresql/data \
-d postgres:11.2

备注:操作都是docker启动容器后,进入容器中操作的

备份Postgres11.2的数据

  • 使用pg_dump备份指定库数据
docker exec -it -u postgres postgres bash
pg_dump -U postgres -Fc -f gitea.sql gitea
pg_dump -U postgres -Fc -f gogs.sql gogs

通过11.2的镜像恢复各库数据,验证备份是成功的

  • 根据数据库备份数据,可以用restore恢复
hrpg_restore -d gitea gitea.sql
hrpg_restore -d gogs gogs.sql

通过13.3的镜像恢复dumpall的数据,验证备份

pg_dumpall -h 127.0.0.1 -U postgres -W > bak_pg_dumpall.sql
psql -f bak_pg_dumpall.sql postgres

参考官方文档操作步骤

pg_dumpall > db.out
psql -f db.out postgres

验证服务是否可用

  • 我备份的gitea是最近正在试用的服务,因此启动gitea看看效果

​​​​​​​

  • 查看日志,然后再看配置,发现是新的容器名字更新了,而gitea的配置还没有跟着更新

​​​​​​​

  • 同步最新配置后,服务启动正常了

​​​​​​​

问题记录

这种需要关闭pg服务,但是会导致容器退出

在容器中遇见

There seems to be a postmaster servicing the new cluster.

Please shutdown that postmaster and try again.

Failure, exiting

这种错误,然后我执行pg_ctl stop就退出容器了,真是无语,然后删除数据目录下的postmaster.pid,pg_upgrade提醒说集群关的不彻底,仍然无法执行check

The target cluster was not shut down cleanly.

Failure, exiting

该如何在关闭了服务的情况下,还不退出容器,在容器里执行升级的命令?

目前我还没有解决这个问题

这种是防止权限不足导致的异常

最终数据库版本升级是成功的

本次进行Postgres升级大版本给了自己许多警示:

  • 数据库这种重要的服务升级要趁早,不能从Postgres10之前的版本进行大版本跨越升级,容易出兼容问题;
  • 操作重要的数据,一定要备份和验证,不然进行升级其实也是破坏性的实验
  • 操作首先要看官方文档,再上网搜索每个博主的个人经验文档

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker容器中修改root密码的正确方法

    Docker容器中修改root密码的正确方法

    在使用 Docker 容器时,有时我们需要在容器创建后动态修改其中用户的密码,尤其是 root 用户的密码,本文详细介绍了如何使用dockerexec命令在运行中的Docker容器中动态修改root用户的密码,并提供了多个示例,需要的朋友可以参考下
    2026-01-01
  • Docker+Jupyter 部署算力服务的解决方案

    Docker+Jupyter 部署算力服务的解决方案

    Docker+Jupyter部署算力服务为AI学习框架提供了一种高效的发布和使用方案,本文以Windows环境为例,介绍了如何下载安装Docker工具,以及如何根据AI框架所需的Python版本拉取合适的Jupyter镜像,本文介绍了Docker+Jupyter 部署算力服务的相关知识,一起看看吧
    2024-11-11
  • Docker Compose使用手册之场景、文件与命令详解

    Docker Compose使用手册之场景、文件与命令详解

    DockerCompose是Docker官方的多容器应用管理和编排工具,它简化了多容器应用的部署和管理,支持一键启动、停止服务,配置服务依赖和环境变量,管理网络和卷等,下面小编就和大家详细介绍一下Docker Compose的使用场景、文件与命令吧
    2026-05-05
  • 云原生之docker命令详解

    云原生之docker命令详解

    Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,本文就给大家介绍了云原生中的docker命令
    2023-06-06
  • Docker安装Jenkins全过程

    Docker安装Jenkins全过程

    这篇文章主要介绍了Docker安装Jenkins全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • Docker Swarm入门实例详解

    Docker Swarm入门实例详解

    这篇文章主要介绍了Docker Swarm 入门实例详解的相关内容,小编觉得十分不错,在这里给大家分享下,需要的朋友可以参考。
    2017-10-10
  • Docker Desktop Vmmem内存占用过高问题及完美解决方案

    Docker Desktop Vmmem内存占用过高问题及完美解决方案

    DockerDesktopVmmem内存占用过高问题常见于其基于WSL运行类似虚拟机的机制,通过编辑.wslconfig文件限制WSL资源,可有效降低内存占用,具体操作包括创建.wslconfig文件,调整内存配置,并重启Docker Desktop,需注意内存设置不宜过小,以免影响Docker运行和容器稳定性
    2024-09-09
  • IDEA通过Docker插件部署SpringBoot项目的过程详解

    IDEA通过Docker插件部署SpringBoot项目的过程详解

    在idea中如何通过Docker插件部署SpringBoot项目呢?很多朋友在配置过程中走了很多误区,今天小编给大家分享一篇教程关于IDEA通过Docker插件部署SpringBoot项目的过程,感兴趣的朋友一起看看吧
    2021-11-11
  • 浅谈docker-compose网络设置之networks

    浅谈docker-compose网络设置之networks

    这篇文章主要介绍了浅谈docker-compose网络设置之networks,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Docker安装及阿里云镜像加速器的配置方法

    Docker安装及阿里云镜像加速器的配置方法

    这篇文章主要介绍了Docker安装及阿里云镜像加速器配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06

最新评论