私はそれぞれPostgreSQL9.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
を生成します。
ここで何が起こっているのでしょうか。また、スタンバイを正常に開始するにはどうすればよいですか。
これは、マスターとスタンバイの両方が、実際にpg_basebackup
を持つクラスターで取得されたmax_connections = 2000
から初期化されたために発生しました。状況の詳細と2つの救済策が説明されています ここ :
[...]これは、スタンバイのpg_controlが前のプライマリサーバーの
max_connections
[...]を記憶しているためです。したがって、少なくとも1回の再起動のために、スタンバイでより高い設定を行う必要があります。 。]hot_standby = off
を使用してスタンバイを1秒間開始し、保留中のWALを再生した後で再度有効にします。