维护与不同服务器上的 PostgreSQL 数据库的连接

Maintaining connectivity to PostgreSQL databases on different servers

目前我有 2 台 PostgreSQL 服务器

有时我需要在每台服务器上进行架构修改,因此我必须阻止与该特定数据库的所有连接并关闭所有现有连接。由于某些数据库的数据库名称相同,最好的方法是什么?感谢您的帮助。

我正在使用 pgAdmin 4.1.3。

断开所有现有连接并阻止所有新连接以及允许新连接返回的代码是什么SQL?

select pg_terminate_backend(pid) from pg_stat_activity where pid <> pg_backend_pid();

将终止除您之外的所有会话。您可以使用 pg_cancel_backend 取消而不是杀死...

要阻止新连接,您可以执行以下任一操作:

  1. 更改端口(需要重启)
  2. 更改 listen_addresses(需要重新启动)
  3. add host all all all 0.0.0.0/0 reject on the top of other lines in pg_hba.conf(需要重新加载)
  4. alter user set default_transaction_read_only = on 所有用户
  5. 更新 pg_database set datallowconn = false where datname = '...' 或者 ALTER DATABASE "name" ALLOW_CONNECTIONS false 如果你 运行 9.5 or higher

第四个很容易克服,但不需要更改配置。

第五个 not meant for such usage,但在这里绝对有帮助 - 谢谢@Nick Barnes