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

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

---

Индекс LLMS: [llms.txt](/ru/llms.txt)

---

<a id="pause"></a>

--------

## Цель {#the-goal}

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

--------

## Реализация {#the-implementation}

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

- Для каждого узла ключ участника в DCS обновляется с текущей информацией о кластере. Это заставляет Patroni выполнять запросы только на чтение на узле-участнике, если участник работает.
- Для первичного сервера PostgreSQL с блокировкой лидера Patroni обновляет блокировку. Если узел с блокировкой лидера перестаёт быть первичным сервером (т.е. понижен вручную), Patroni освободит блокировку вместо того, чтобы снова повысить узел до статуса первичного сервера.
- Разрешены ручной перезапуск и ручное переключение (failover/switchover) без отложенного запуска, а также повторная инициализация. Действия с запуском по расписанию запрещены. Ручное переключение switchover разрешено только при указании целевого узла.
- Если Patroni обнаруживает «параллельные» первичные серверы, он выдаёт предупреждение, но не понижает первичный сервер без блокировки лидера.
- Если в кластере отсутствует блокировка лидера, первичный сервер, работающий в данный момент, получает блокировку. Если существует более одного первичного сервера, то побеждает первый первичный сервер, получивший блокировку. Если первичных серверов вообще нет, Patroni не пытается повышать реплики до статуса первичного. Исключение из этого правила: если блокировка лидера отсутствует из-за того, что старый первичный сервер сам понизил свой статус в результате ручного повышения, то блокировку лидера может получить только узел-кандидат, упомянутый в запросе на повышение. После выдачи новой блокировки лидера (т.е. после ручного повышения реплики) Patroni следит за тем, чтобы реплики, которые ранее реплицировались с предыдущего лидера, переключились на нового лидера.
- При остановке Postgres Patroni не пытается запустить его. При остановке Patroni не пытается остановить экземпляр Postgres, которым управляет.
- Patroni не будет пытаться удалять слоты репликации, которые не представляют другого участника кластера и не указаны в конфигурации постоянных слотов.

--------

## Руководство пользователя {#user-guide}

[patronictl](/ru/docs/patroni/patronictl#patronictl) поддерживает команды [pause](/ru/docs/patroni/patronictl#patronictl_pause) и [resume](/ru/docs/patroni/patronictl#patronictl_resume).

Можно также отправить запрос `PATCH /config` к REST API Patroni с `{"pause": true/false/null}`, чтобы обновить ключ `{namespace}/{cluster}/config` в DCS.

---

Обратные ссылки:

- [Часто задаваемые вопросы](/ru/docs/patroni/faq/)
- [Примечания к выпускам](/ru/docs/patroni/releases/)
- [Patroni REST API](/ru/docs/patroni/rest_api/)
