Невозможно удалить БД с помощью repmgr

Я использую repmgr и успешно переключился на резервный узел. Однако, когда я попытался восстановить неисправный мастер-узел, я обнаружил, что у меня есть два мастер-узла.

Я попытался повторно зарегистрировать резервный узел как резервный. Но я обнаружил, что когда repmgr проверяет режим узла, он обнаруживает, что он находится в режиме восстановления и не позволяет его.

repmgr -f /var/lib/pgsql/repmgr/repmgr.conf cluster show
=> Role      | Connection String 
* master  | host=<IP Address> user=repmgr dbname=my_db
* master  | host=<IP Address> user=repmgr dbname=my_db

Узел 1

repmgr -f /var/lib/pgsql/repmgr/repmgr.conf --verbose master register --force
=> Opening configuration file: /var/lib/pgsql/repmgr/repmgr.conf
repmgr connecting to master database
repmgr connected to master, checking its state
finding node list for cluster 'my_cluster'
checking role of cluster node 'host=<IP Address> user=repmgr dbname=my_db'
There is a master already in cluster my_cluster

Node 2
============
repmgr -f /var/lib/pgsql/repmgr/repmgr.conf standby clone -h <master Node IP> --force
=> repmgr: directory "." exists but is not empty

Любой совет будет принят во внимание.

1 ответ

Решение

Хитрость заключается в том, чтобы отключить демон postgres на сервере, который вы хотите удалить. Вам не нужно снова включать его, пока вы не завершите клон, к тому времени cluster show покажет, что старый мастер был успешно понижен в должности.

В зависимости от вашей логики пула соединений, вы, вероятно, захотите, чтобы старый мастер был выключен на всякий случай, если что-то записывается в него, а затем теряется во время клонирования.

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