PostgreSQL 热备无法启动,因为 max_connections 的设置低于主服务器上的设置

roo*_*e09 2 postgresql replication

我各有一个 PostgreSQL 9.6 主服务器和备用服务器。这两行在他们各自的postgresql.conf

max_connections = 100
Run Code Online (Sandbox Code Playgroud)

备用的recovery.conf外观如下(统计数据hostuser以及cluster隐藏的):

standby_mode = on
recovery_target_timeline = latest
primary_conninfo = 'host=<host> port=5433 user=<user>'
Run Code Online (Sandbox Code Playgroud)

当我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)
Run Code Online (Sandbox Code Playgroud)

我想知道:价值2000从何而来。两个集群都应该看到100,即相等的值。并且确实SHOW max_connections对高手产生了影响100

这是怎么回事,我怎样才能使待机成功启动?

roo*_*e09 5

发生这种情况是因为我的主服务器和备用服务器都是从pg_basebackup在确实具有max_connections = 2000. 此处解释了情况的详细信息和两种补救措施:

[...] 这是因为备用服务器上的 pg_control 会记住前一个主服务器的max_connections[...] 因此,您必须在备用服务器上进行更高的设置才能至少重新启动一次,或者 [...] 只需启动等待一秒钟hot_standby = off,然后在重放挂起的 WAL 后重新启用它。