Как выполнить возврат к кластеру Postgresql с помощью repmgr?
Я хочу создать кластер Postgresql в облачной среде (да, я знаю, что это плохая идея... но это не вопрос). Для вашей информации я использую Dockerized Postgresql (см.: https://github.com/paunin/postgres-docker-cluster), но это не проблема и не вопрос.
Поэтому я установил 2 Postgresql 9.5 с потоковой репликацией. На каждом хосте у меня установлен и правильно настроен repmgr 3.2.1.
В следующем случае есть некоторые проблемы:
- остановить мастера,
- ждать переключения на подчиненном устройстве -> хорошо,
- перезапустите старый мастер -> Ко, у меня есть 2 мастера в кластере, показанном
repmgr cluster show
и я не нахожу никакого решения, чтобы заставить старого мастера стать рабом.
Единственное уродливое решение, которое я нашел, - удалить все данные старого мастера и перезапустить его. Делая это, он стал рабом, как и ожидалось (но полная ресинхро необходима...).
Обратите внимание, что, кажется, невозможно заставить старого мастера стать рабом. repmgr standby register
не работает, как говорится:
[2016-12-06 15:04:04] [INFO] connecting to standby database
[2016-12-06 15:04:04] [ERROR] this node should be a standby (user=replication_user password=replication_pass host=psg-host21 dbname=replication_db port=5432 connect_timeout=2)
[2016-12-06 15:04:04] [INFO] connecting to database
Role | Name | Upstream | Connection String
----------+------------|------------|------------------------------------------------------------------------------------------------------------------
* master | psg-host21 | | user=replication_user password=replication_pass host=psg-host21 dbname=replication_db port=5432 connect_timeout=2
* master | psg-host22 | psg-host21 | user=replication_user password=replication_pass host=psg-host22 dbname=replication_db port=5432 connect_timeout=2
Любая помощь будет принята с благодарностью.
1 ответ
Если вам нужен высокодоступный кластер Postgres, управляемый repmgr, вы можете использовать pg-dock
Это инструмент для подключения кластера Postgres к repmgr.