Postgres pg_upgrade 13.2 到 14,返回共享内存不足。 - Amazon Linux 第 2 版 (Karoo)

Posted

技术标签:

【中文标题】Postgres pg_upgrade 13.2 到 14,返回共享内存不足。 - Amazon Linux 第 2 版 (Karoo)【英文标题】:Postgres pg_upgrade 13.2 to 14, returns out of shared memory. - Amazon Linux release 2 (Karoo) 【发布时间】:2021-12-02 10:21:21 【问题描述】:

尝试将 Postgres 13.2 数据库升级到 14 时,我在运行升级时收到错误“共享内存不足”。

我已经调整了 max_locks_per_transaction 到不同且非常高的值,以及 max_connections 和其他内存设置。我检查了许多配置设置,但没有找到无法使用这些设置执行 pg_dump/pg_upgrade 的原因。

操作系统是

Amazon Linux release 2 (Karoo). ID_LIKE="centos rhel fedora"

报错如下

command: "/usr/pgsql-14/bin/pg_dump" --host /usr/pgsql-14/bin --port 50432 --username postgres --schema-only --quote-all-identifiers --binary-upgrade --format=custom  --file="pg_upgrade_dump_18458.custom" 'dbname=aprivatedb' >> "pg_upgrade_dump_18458.log" 2>&1
pg_dump: error: query failed: ERROR:  out of shared memory
HINT:  You might need to increase max_locks_per_transaction.
pg_dump: error: query was: LOCK TABLE "privatedata"."private_activities" IN ACCESS SHARE mode

【问题讨论】:

【参考方案1】:

您在哪里进行了这些更改?根据错误消息,需要 max_locks_per_transaction 提升的是 13 集群,而不是 14 集群。

pg_dump 针对旧集群运行(使用新的二进制文件),而不是新的。

【讨论】:

这正是问题所在。谢谢 !客户端更新了之前的 13 conf 文件,升级运行没有问题。 (他们已经注释掉了 max_locks_per_transaction 和 max_connections=100 )

以上是关于Postgres pg_upgrade 13.2 到 14,返回共享内存不足。 - Amazon Linux 第 2 版 (Karoo)的主要内容,如果未能解决你的问题,请参考以下文章

相同数据空间内的 postgres 主要升级(9.5.x 到 9.6.x)

利用pg_upgrade更新数据库(从8.4升级到9.5)

为 Postgres 分区创建自定义哈希运算符

PostgreSQL升级之pg_upgrade升级

postgresql大版本升级

在RedHat中从postgresql 9.2升级到9.6时unix_socket_directory出错