PSQL 恢复过程失败,提示“pg_restore:错误:无法执行查询:没有与服务器的连接”

问题描述 投票:0回答:1

我有大约 450MB 的数据库备份。我想将数据库恢复到具有 2vCPU 和 1 GB RAM 的 Amazon Lightsail 托管数据库。我还启用了数据迁移导入模式,以便在导入数据时不会出现任何中断(推荐方式)。

数据库恢复过程成功启动,大约需要 3 小时,但突然该过程因抛出此错误而失败

pg_restore:错误:无法执行查询:没有连接到服务器

我再次启动该过程,3 小时后再次失败并抛出相同的错误。我的互联网很稳定,我的数据库也很活跃。我无法弄清楚这可能是什么原因。

database postgresql data-import
1个回答
0
投票

我认为 RDS 不支持 pgagent。如果 pgagent 是您的应用程序的核心,您将需要找到另一个解决方案,例如不使用 RDS,或更改您的应用程序以不使用 pgagent。

但通常 pg_restore 会创建所有需要的扩展,作为它所做的第一件事,所以我不明白他们如何花了 3 个小时才注意到这一点,也不明白为什么问题会随着你得到的后续错误而显现出来。我没有收到“没有连接到服务器错误”的信息。我得到的结果取决于 pg_restore 的选项。因此,这些问题的演示可能是 lightsail/RDS 特定的。

如果 pgagent 是您的应用程序的外围设备,那么您仍然可以访问原始服务器,您可以删除该扩展并重做转储。如果没有,您可以将转储恢复到 PostgreSQL 的社区版本,删除扩展名,然后重做转储。问题是,这可能只是冰山一角,您可能会发现许多其他兼容性问题,而且一次只解决这个问题会很糟糕。

如果你想预览正在发生的事情,也许你可以这样做:

pg_restore dmp.dmp -f - | fgrep -in 'create extension'

查看修复体将尝试进行的所有扩展以及在会话中多早尝试进行扩展。

© www.soinside.com 2019 - 2024. All rights reserved.