Восстановление после сбоя после сбоя

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

Наши настройки могут быть немного необычными, поскольку каждый сервер находится в отдельном дата-центре. Отработка отказа состоит не только в переносе первичной базы данных в другой дата-центр, но и в связанные клиентские приложения. Поэтому по причинам скорости / пропускной способности важно, чтобы после отработки отказа мы могли вернуться (восстановление после отказа) к нашей обычной конфигурации.

Наша установка выглядит следующим образом:

Primary1  ----replicate---> Standby1 ---replicate---> HotStandby2 

Как уже говорилось, мы можем убить мастера и аварийное переключение на следующую ситуацию

Standby1 ---replicate---> HotStandby2  

Теперь мы хотели бы выполнить возврат, поэтому мы создаем новую базу данных с именем Primary2 и устанавливаем ее как реплика Standby1.

Standby1 ---replicate---> HotStandby2  
         ---replicate---> Primary2  

Через некоторое время Primary2 синхронизируется с Standby1, поэтому мы хотим сделать Primary2 активным сервером, а затем перенастроить Standby2 на репликацию Primary2, чтобы вернуться в исходное состояние.

Primary2  ----replicate---> Standby1 ---replicate---> HotStandby2 

Активизировать Primary2 легко, но мы не можем найти способ перевести Standby2 из активного состояния в режим ожидания.

Мы пробовали

  1. обеспечение синхронизации Primary2 с Standby1
  2. Изменение recovery.done для recovery.conf
  3. добавление recovery_target_timeline = 'latest' в recovery.conf
  4. Настройка новых слотов репликации
  5. Использование pg_rewind
  6. Использование pg_rewind вместе с архивными WAR-файлами

Большинство наших попыток приводят к тому, что Standby1 все еще работает как мастер, и в файлах журналов появляются странные сообщения о расходящихся временных шкалах....

У кого-нибудь есть какие-нибудь идеи или можете указать нам на некоторые статьи - учебные пособия и т. Д

Это возможно даже в Postgres? Или мы должны перестроить Standby1, и если да, то как насчет HotStandby2?

0 ответов

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