web-dev-qa-db-ja.com

max_connectionsがマスターよりも低い設定であるため、PostgreSQLホットスタンバイを開始できません

私はそれぞれPostgreSQL9.6マスターサーバーとスタンバイサーバーを持っています。それぞれのpostgresql.confのこの行は両方とも:

max_connections = 100

スタンバイのrecovery.confは次のようになります(実際のHostuser、および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_connections100を生成します。

ここで何が起こっているのでしょうか。また、スタンバイを正常に開始するにはどうすればよいですか。

1
rookie09

これは、マスターとスタンバイの両方が、実際にpg_basebackupを持つクラスターで取得されたmax_connections = 2000から初期化されたために発生しました。状況の詳細と2つの救済策が説明されています ここ

[...]これは、スタンバイのpg_controlが前のプライマリサーバーのmax_connections [...]を記憶しているためです。したがって、少なくとも1回の再起動のために、スタンバイでより高い設定を行う必要があります。 。] hot_standby = offを使用してスタンバイを1秒間開始し、保留中のWALを再生した後で再度有効にします。

3
rookie09