Назад | Перейти на главную страницу

Горячий резерв PostgreSQL не может быть запущен, потому что max_connections имеет меньшее значение, чем на главном сервере

У меня есть главный и резервный сервер 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.