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

时间:2017-03-21 13:20:29

标签: postgresql pgadmin

目前我有2台PostgreSQL服务器

  • PostgreSQL 9.4
    • 数据库1
    • 的Database2
    • 数据库3
  • PostgreSQL 9.6
    • 数据库1
    • 的Database2
    • 数据库3

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

我正在使用pgAdmin 4.1.3。

什么是SQL代码,用于断开所有现有连接并阻止所有新连接,以及允许新连接返回的相同内容?

1 个答案:

答案 0 :(得分:2)

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

会杀死你的所有会话。您可以使用pg_cancel_backend取消而不是杀死...

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

  1. 更改端口(需要重启)
  2. 更改listen_addresses(需要重启)
  3. 在pg_hba.conf中的其他行之上添加所有0.0.0.0/0拒绝主机(需要重新加载)
  4. 所有用户
  5. alter user set default_transaction_read_only = on
  6. 更新pg_database设置datallowconn = false如果您运行9.5 or higher
  7. ,则datname ='...'或ALTER DATABASE "name" ALLOW_CONNECTIONS false

    第四个可以轻松克服,但不需要更改配置。

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