PostgreSQL 9.5 - 更改为 max_connections 对从属不可见

PostgreSQL 9.5 - change to max_connections not being visible to slaves

我已经在我的主服务器上添加了一个 pgbouncer 进程,所以我想将连接数从 1500 减少到 100 左右以释放主服务器上的资源,但是当我在主服务器和主服务器上都更改它时从站,新设置对从站不可见:

2020-01-29 14:59:19 dbr5 postgres[47563]: [4-1] 2020-01-29 14:59:19 EST [47563]: [4-1] user=,db=,app=,client= FATAL:  hot standby is not possible because max_connections = 100 is a lower setting than on the master server (its value was 1500)

这是换主后的样子:

master=# show max_connections;
 max_connections
-----------------
 100
(1 row)

为什么奴隶不采用新设置的任何线索?

配置参数在全局设置时永远不会被复制。它们可以被设置

  • postgresql.conf

  • ALTER SYSTEM

  • 在服务器进程启动时使用命令行选项

最后一个选项显然无法复制,前两个使用配置文件也无法复制。

这是一项功能:在某些情况下您可能希望配置参数有所不同(尽管通常不值得称赞)。

您必须更改备用服务器上的参数。

slave 需要知道 master 的 max_connections 设置才能执行此检查,因此 master 通过 WAL 条目将更改通知 slave。

但是,如果从站当前的 max_connections 设置与主站上的 last known 设置不兼容,则从站不会读取任何 WAL 条目。

你应该先重新配置master,给相应的WAL条目一个复制的机会,然后再重新配置slave。

在从机上输入 hot_standby = off,用新的较低连接数重新启动主机,然后在确认从机已收到更改后通过查看日志中的 FATAL: the database system is starting up 日志条目,然后将其切换回 on 有效。系统现在有了新的连接下限。