docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker操作Postgres11升级Postgres13

docker操作Postgres11升级Postgres13实践

作者:技术嘭嘭嘭

这篇文章主要介绍了docker操作Postgres11升级Postgres13实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

操作docker

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

docker search postgres
docker pull postgres

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的数据

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的镜像恢复各库数据,验证备份是成功的

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

验证服务是否可用

​​​​​​​

​​​​​​​

​​​​​​​

问题记录

这种需要关闭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升级大版本给了自己许多警示:

总结

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

您可能感兴趣的文章:
阅读全文