在不结束连接的情况下恢复 postgres

Restore postrgres without ending connections

我 运行 针对 postgres 数据库进行临时分析的一些查询。很多时候,我会让连接保持打开状态,而不是在每次查询后结束。

我每五分钟通过 shell 脚本通过 scp 收到一个 postgres 转储,我想在不切断连接的情况下恢复数据库。这可能吗?

在用户连接时您不能执行的少数活动之一是删除数据库。
所以——如果这就是你在恢复过程中所做的——你将不得不改变你的方法。不要删除数据库(不要在 pg_dumppg_restore 中使用 -C 选项),而是删除并重新创建不依赖于架构的架构和对象(喜欢大物体)。
您可以为此使用 pg_dumppg_restore-c 标志。

您可能 运行 遇到的另一个问题是与开放事务的连接(状态“事务中的空闲”)。这样的连接可以持有锁,使您无法删除和重新创建对象,您必须使用 pg_terminate_backend() 来摆脱它们。