使用不同的数据目录将Postgresql从9.6升级到11

使用不同的数据目录将Postgresql从9.6升级到11,postgresql,Postgresql,我正在尝试将PostgreSQL版本从9.6升级到11。我正在关注这一点。问题是我已将PostgreSQL数据目录的默认位置从/var/lib/PostgreSQL/更改为/opt/PostgreSQL/。因此,当我使用pglsuclusters时,它返回以下内容 当我运行sudo pg_upgradecluster-m upgrade 9.6 main时,返回以下错误 Error: move_conffile: required configuration file /var/lib/pos

我正在尝试将PostgreSQL版本从9.6升级到11。我正在关注这一点。问题是我已将PostgreSQL数据目录的默认位置从
/var/lib/PostgreSQL/
更改为
/opt/PostgreSQL/
。因此,当我使用
pglsuclusters
时,它返回以下内容

当我运行sudo pg_upgradecluster-m upgrade 9.6 main时,返回以下错误

Error: move_conffile: required configuration file /var/lib/postgresql/11/main/postgresql.conf does not exist
Error: Could not create target cluster

听起来好像你在运行
pg_upgradecluster
之前移动了文件夹,所以现在它再也找不到配置文件了

如果您已经有备份,我将执行以下操作:

  • /opt/postgresql/9.6/main
    移回原来的位置(在
    /var/lib/postgresql
    中)
  • (对此不确定):删除
    /opt/postgresql/11/main
  • 运行
    pgu升级集群9.6 main/opt/postgresql/11
    这将告诉它使用默认位置
    9.6/main
    ,并将升级版本存储到
    /opt/postgresql/11
我不确定第二点,因为我不记得
pg_upgradecluster
是如何处理现有文件夹的。但只要你有备份,你就可以玩它。我最好的猜测是,如果它看到该文件夹已经存在以确保没有任何内容被覆盖,那么它将以错误退出。因此,您可能需要删除它

您可以尝试将文件夹移回原来的位置,然后再次运行
pg_upgradecluster
。但是你必须小心:9.6到11版本是一个主要的升级,它改变了磁盘上的二进制格式<代码>pg_upgradecluster应通过执行转储/加载操作来解决此问题

如果上述操作失败 以下是一些让你行动起来的建议:

  • pg_upgradecluster
    只进行转储/加载,但具有更方便的CLI界面
  • 您可以使用
    postgres-D-c-p
  • 手动启动后,可以运行
    pg_dumpall--cluster 9.6/main-Ft-f dump.tar
  • 运行
    pg_createcluster-d/opt/postgresql--start 11 main
    (使用
    --start
    将在创建后启动它)
  • 一旦启动,您应该能够将以前的转储重新加载到该集群中。您应该能够使用
    pg_restore--cluster 11/main-Ft-f dump.tar以新集群为目标,以满足转储/加载需求

这个问题更适合,因为它与编程无关。我已经用datadir
pg_upgradecluster 9.6 main/opt/postgresql/11运行了。运行良好。但由于新的错误而停止<代码>错误:pg_升级运行失败。日志文件位于/var/log/postgresql/pg_upgradecluster-9.6-11-main.FqiK
中。在文本文件中,我看到它无法加载库postgis-2.3、rtpostgis-2.3、libpgrouting-2.4、libpgrouting-2.6和postgiu-topology-2.3。我也无法返回到
/var/lib/postgresql
,因为没有可用空间来复制巨大的数据库。
postgis
不是
postgres
默认安装的一部分。你确定你为v11安装了它吗?我添加了更多提示。不确定它们会有多大帮助,但它们应该为您提供一些额外的信息,以便从当前的困境中恢复过来。只需将转储格式更改为
tar
(使用
-Ft
),这应该比使用普通SQL输出稍微好一些。不过我还没有测试过这个。我不确定
-Fc
是否有效,因为这是一次重大升级。