У меня есть главный и резервный сервер 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
.
Что здесь происходит и как я могу успешно запустить режим ожидания?
Это произошло из-за того, что и мой главный, и резервный были инициализированы из pg_basebackup
это было сделано на кластере, который действительно max_connections = 2000
. Объясняются подробности ситуации и два средства правовой защиты. Вот:
[...] это потому, что pg_control на резервном сервере запоминает, что предыдущий основной сервер
max_connections
[...] Таким образом, вам придется либо иметь более высокие настройки в режиме ожидания хотя бы для одного перезапуска, либо [...] просто запустить режим ожидания на секунду с помощьюhot_standby = off
, а затем снова включите его после воспроизведения ожидающего WAL.