repmgr - автоматизировать процесс превращения первичного в резервный после отработки отказа

У меня есть два сервера postgres, работающих на CentOS 7 с repmgr 4.1.0-1. До сих пор я автоматизировал процесс преобразования резервного на основной после сбоя основного сервера, но когда он возвращается, они оба действуют как первичные, и я не думаю, что команда follow_command из repmgr.conf выполняется. Я могу сделать это вручную, удалив папку данных и клонировать ее с нового основного сервера, а затем зарегистрировать как резервный.

repmgr.conf на сервере 1

node_id=1
node_name=pgdb1
conninfo='host=192.168.0.105 user=repmgr dbname=repmgr'
pg_bindir=/usr/pgsql-9.6/bin/
master_response_timeout=5
reconnect_attempts=2
reconnect_interval=2
failover=automatic
promote_command='/usr/pgsql-9.6/bin/repmgr standby promote -f /var/lib/pgsql/9.6/repmgr/repmgr.conf --log-to-file'
follow_command='/usr/pgsql-9.6/bin/repmgr standby follow -f /var/lib/pgsql/9.6/repmgr/repmgr.conf --log-to-file --upstream-node-id=2'
data_directory='/var/lib/pgsql/9.6/data'
log_file='/var/log/repmgr/repmgr.log'
log_level=DEBUG
service_start_command   = 'sudo systemctl start postgresql-9.6'
service_stop_command    = 'sudo systemctl stop postgresql-9.6'
service_restart_command = 'sudo systemctl restart postgresql-9.6'
service_reload_command  = 'sudo systemctl reload postgresql-9.6'

repmgr.conf на сервере 2

node_id=2
node_name=pgdb2
conninfo='host=192.168.0.106 user=repmgr dbname=repmgr'
pg_bindir=/usr/pgsql-9.6/bin/
master_response_timeout=5
reconnect_attempts=2
reconnect_interval=2
failover=automatic
promote_command='/usr/pgsql-9.6/bin/repmgr standby promote -f /var/lib/pgsql/9.6/repmgr/repmgr.conf --log-to-file'
follow_command='/usr/pgsql-9.6/bin/repmgr standby follow -f /var/lib/pgsql/9.6/repmgr/repmgr.conf --log-to-file --upstream-node-id=1'
data_directory='/var/lib/pgsql/9.6/data'
log_file='/var/log/repmgr/repmgr.log'
log_level=DEBUG
service_start_command   = 'sudo systemctl start postgresql-9.6'
service_stop_command    = 'sudo systemctl stop postgresql-9.6'
service_restart_command = 'sudo systemctl restart postgresql-9.6'
service_reload_command  = 'sudo systemctl reload postgresql-9.6'

После повторного запуска сервера он подключается к себе и возобновляет мониторинг. Вот лог

[2018-08-16 21:29:56] [DEBUG] connecting to: "user=repmgr dbname=repmgr host=192.168.0.105 connect_timeout=2 fallback_application_name=repmgr"
[2018-08-16 21:29:56] [NOTICE] reconnected to primary node after 22 seconds, resuming monitoring
[2018-08-16 21:31:33] [INFO] monitoring primary node "pgdb1" (node ID: 1) in normal state

Есть ли способ автоматизировать первичное переключение в режим ожидания при повторном запуске или в исходный режим ожидания, который был переведен в режим ожидания? Или, может быть, я могу перенаправить на скрипт, который будет делать это из follow_command, например: follow_command='change-to-standby.sh'

Я буду признателен за любую помощь.

0 ответов

Другие вопросы по тегам