Перейти к основному содержимому

Режим паузы/возобновления для кластера

примечание

Эта страница переведена при помощи нейросети GigaChat.

Цель

При определенных обстоятельствах Patroni необходимо временно прекратить управление кластером, сохраняя при этом состояние кластера в DCS. Возможные случаи использования включают редкие действия с кластером, такие как обновление основной версии или восстановление после повреждения. Во время этих действий узлы часто запускаются и останавливаются по причинам, неизвестным Patroni, некоторые узлы могут быть даже временно повышены, нарушая предположение о работе только одного основного узла. Поэтому Patroni должен иметь возможность «отсоединиться» от работающего кластера, реализуя эквивалент режима обслуживания в Pacemaker.

Реализация

Когда Patroni работает в режиме паузы, он не изменяет состояние PostgreSQL, за исключением следующих случаев:

  • Для каждого узла ключ члена в DCS обновляется текущей информацией о кластере. Это приводит к тому, что Patroni выполняет запросы только для чтения на узле-члене, если член запущен.
  • Для основного сервера Postgres с блокировкой лидера Patroni обновляет блокировку. Если узел с блокировкой лидера перестает быть основным (т.е. понижается вручную), Patroni освободит блокировку вместо того, чтобы снова повысить узел.
  • Ручной незапланированный перезапуск, ручное незапланированное переключение и повторная инициализация разрешены. Никакие запланированные действия не допускаются. Ручное переключение разрешено только в том случае, если указан узел для переключения.
  • Если Patroni обнаруживает первичные узлы с параллельной обработкой, он выдает предупреждение, но не понижает приоритет основного узла без блокировки лидера.
  • Если в кластере нет блокировки лидера, то работающий основной узел получает блокировку. Если существует более одного основного узла, то побеждает первый основной узел, который получит блокировку. Если вообще нет основных узлов, Patroni не пытается продвигать какие-либо реплики. В этом правиле есть исключение: если нет блокировки лидера из-за того, что старый основной узел понизил себя из-за ручной активации, тогда только указанный кандидатный узел может получить блокировку лидера. Когда новая блокировка лидера предоставляется (т.е. после ручной активации реплики), Patroni обеспечивает, чтобы реплики, которые транслировались от предыдущего лидера, переключились на нового.
  • Когда PostgreSQL остановлен, Patroni не пытается его запустить. Когда Patroni остановлен, он не пытается остановить экземпляр PostgreSQL, которым он управляет.
  • Patroni не будет пытаться удалить слоты репликации, которые не представляют другой член кластера или не указаны в конфигурации постоянных слотов.

Использование

patronictl поддерживает команды паузы и возобновления.

Также можно отправить запрос PATCH к ключу {namespace}/{cluster}/config с помощью {"pause": true/false/null}.