【问题标题】:docker - postgres upgrade 11 to 12 postmaster issuedocker - postgres 将 11 升级到 12 的 postmaster 问题
【发布时间】:2020-02-27 14:12:37
【问题描述】:


我使用这个 https://github.com/tianon/docker-postgres-upgrade 将 postgres 从 11 版本升级到 12 版本并在升级时遇到问题,出现错误 - “postmaster services 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 run 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

提前谢谢你。

【问题讨论】:

  • "请关闭该邮局管理员并重试。" - 您是否尝试过按照它的要求关闭旧的邮局局长?
  • @RichardHuxton 在运行上述“tianon/postgres-upgrade” docker run 之前,我已将 postgres docker 服务缩放到 0 ( docker service scale pgs=0 ),但仍然抛出为什么..?我错了吗..?或者任何其他方式来阻止邮局局长..?
  • 看起来不像docker service scale pgs=0,你实际上需要docker stop v11容器
  • @RichardHuxton 我已经尝试过了,但在手动停止 docker 容器后仍然出现如下错误。错误-:
  • @RichardHuxton 我已经尝试过了,但在手动停止 docker 容器后仍然出现如下错误。错误:-

标签: postgresql docker pg-upgrade


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    问题是 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-06
      • 2018-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 2022-10-06
      相关资源
      最近更新 更多