我有一个 PostgreSQL 9.6 主服务器和一个备用服务器。这两行分别位于postgresql.conf
:
max_connections = 100
待机状态recovery.conf
如下所示(实际host
、user
和cluster
隐藏):
standby_mode = on
recovery_target_timeline = latest
primary_conninfo = 'host=<host> port=5433 user=<user>'
当我pg_ctlcluster 9.6 <cluster> start
报告以下错误:
FATAL: hot standby is not possible because max_connections = 100
is a lower setting than on the master server (its value was 2000)
我想知道:这个值从何2000
而来。两个集群都应该看到100
,即相等的值。而且SHOW max_connections
主集群确实产生了100
。
这是怎么回事?我怎样才能使待机系统成功启动?
答案1
发生这种情况的原因是,我的主服务器和备用服务器都是从 初始化的,pg_basebackup
而该服务器是在确实有 的集群上进行的max_connections = 2000
。解释了这种情况的详细信息和两种补救措施这里:
[...] 这是因为备用服务器上的 pg_control 会记得前一个主服务器的
max_connections
[...] 因此,您要么必须在备用服务器上设置更高的设置以至少重新启动一次,要么 [...] 只需使用 启动备用服务器一秒钟hot_standby = off
,然后在重播待处理的 WAL 后重新启用它。