docker - postgres 升级 11 到 12 postmaster 问题

docker - postgres upgrade 11 to 12 postmaster issue


我用这个 https://github.com/tianon/docker-postgres-upgrade 将 postgres 从 11 版本升级到 12 版本并在升级时遇到问题,出现错误 - "postmaster servicing the old cluster"

这里分别为 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

提前谢谢你。

我尝试了更长的时间 stop_grace_period 以便 postgresql 服务器在收到 SIGTERM (postgresql.org/docs/11/server-shutdown.html) 时有足够的时间停止一切。然后 postgres 停止了

问题是 postgres 服务器在 docker 终止之前没有完全关闭,但停止进程也会重新启动容器。

另一个选项是禁用重启

docker update --restart=no $CONTAINER_ID

然后执行到容器中

docker exec -it $CONTAINER_ID bash

找到 pg_ctl 二进制文件,supostgres 用户,然后 运行 pg_ctl stop

# which pg_ctl
/usr/lib/postgresql/12/bin/pg_ctl
# su postgres
$ /usr/lib/postgresql/12/bin/pg_ctl stop