在不结束连接的情况下恢复 postgres
Restore postrgres without ending connections
我 运行 针对 postgres 数据库进行临时分析的一些查询。很多时候,我会让连接保持打开状态,而不是在每次查询后结束。
我每五分钟通过 shell 脚本通过 scp 收到一个 postgres 转储,我想在不切断连接的情况下恢复数据库。这可能吗?
在用户连接时您不能执行的少数活动之一是删除数据库。
所以——如果这就是你在恢复过程中所做的——你将不得不改变你的方法。不要删除数据库(不要在 pg_dump
或 pg_restore
中使用 -C
选项),而是删除并重新创建不依赖于架构的架构和对象(喜欢大物体)。
您可以为此使用 pg_dump
或 pg_restore
的 -c
标志。
您可能 运行 遇到的另一个问题是与开放事务的连接(状态“事务中的空闲”)。这样的连接可以持有锁,使您无法删除和重新创建对象,您必须使用 pg_terminate_backend()
来摆脱它们。
我 运行 针对 postgres 数据库进行临时分析的一些查询。很多时候,我会让连接保持打开状态,而不是在每次查询后结束。
我每五分钟通过 shell 脚本通过 scp 收到一个 postgres 转储,我想在不切断连接的情况下恢复数据库。这可能吗?
在用户连接时您不能执行的少数活动之一是删除数据库。
所以——如果这就是你在恢复过程中所做的——你将不得不改变你的方法。不要删除数据库(不要在 pg_dump
或 pg_restore
中使用 -C
选项),而是删除并重新创建不依赖于架构的架构和对象(喜欢大物体)。
您可以为此使用 pg_dump
或 pg_restore
的 -c
标志。
您可能 运行 遇到的另一个问题是与开放事务的连接(状态“事务中的空闲”)。这样的连接可以持有锁,使您无法删除和重新创建对象,您必须使用 pg_terminate_backend()
来摆脱它们。