我使用此https://github.com/tianon/docker-postgres-upgrade将Postgres从11版本升级到12版本,并且在升级时遇到问题,出现了错误-“邮政局长为旧集群提供服务”
这里分别为11和12使用了docker容器,在升级之前也缩小了docker服务,但是不确定为什么这个postmaster问题来了,以及如何解决这个问题。
docker run --rm \
-v aip-pgs-data:/var/lib/postgresql/$OLD/data \
-v aip-pg12-data:/var/lib/postgresql/$NEW/data \
"tianon/postgres-upgrade:$OLD-to-$NEW"
在docker上运行日志的cmd部分:-
Success. You can now start the database server using:
pg_ctl -D /var/lib/postgresql/12/data -l logfile start
There seems to be a postmaster servicing the old cluster.
Please shutdown that postmaster and try again.
Failure, exiting
0a5839ad7309d6256510fe89513774a16c4f26ec6a827f9f0089fd8cc10254cb
先谢谢您。
答案 0 :(得分:1)
问题是 postgres 服务器在 docker 杀死它之前没有完全关闭,但是停止进程也会重新启动容器。
另一个选项是禁用重启
docker update --restart=no $CONTAINER_ID
然后执行到容器中
docker exec -it $CONTAINER_ID bash
找到 pg_ctl
二进制文件 su
到 postgres
用户,然后运行 pg_ctl stop
# which pg_ctl
/usr/lib/postgresql/12/bin/pg_ctl
# su postgres
$ /usr/lib/postgresql/12/bin/pg_ctl stop