0Pricing
SQL Academy · Урок

Переключение при сбое и выбор лидера (Patroni, Stolon)

Используйте Patroni или Stolon для автоматического переключения при сбое и настройте кворум, чтобы избежать расщепления кластера

«Переключение при сбое и выбор лидера (Patroni, Stolon)» — бесплатный урок SQL Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SQL Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SQL Academy содержит 4 уроков всего.

Зачем нужна автоматическая смена основного сервера?

Ручное переключение при отказе выполняется медленно и часто приводит к ошибкам. Инструменты обнаруживают отказ основного сервера и автоматически повышают роль реплики без вмешательства человека.

Этапы переключения при отказе

Необходимо выполнить следующие действия:

  1. Обнаружить, что основной сервер недоступен: проверки работоспособности и консенсус
  2. Выбрать реплику с наиболее свежим WAL
  3. Повысить её роль (pg_promote / команда повышения роли)
  4. Перенастроить остальные реплики на следование за новым основным сервером
  5. Обновить маршрутизацию подключений приложения

Риск раздвоения мозга

При разделении сети можно повысить роль реплики, пока старый основной сервер всё ещё работает. Два основных сервера → конфликтующие записи → повреждение данных. Избегайте этого с помощью кворума.

Patroni

Демон на Python, использующий внешнее DCS — распределённое хранилище конфигурации, обычно etcd, Consul или Zookeeper — для выбора лидера:

# patroni.yml
name: pg1
scope: my_cluster
etcd:
  hosts: 10.0.0.10:2379,10.0.0.11:2379,10.0.0.12:2379
postgresql:
  data_dir: /var/lib/postgresql/data

Как Patroni выбирает нового лидера

Демон Patroni на каждом узле пытается первым получить блокировку лидера в etcd. Удерживать её может только один узел; он становится основным сервером. Остальные следуют за ним.

Stolon

Альтернатива на Go. Использует похожую модель консенсуса, но отличается эксплуатационными характеристиками. Распределяет обязанности между наблюдателем, хранителем и прокси.

repmgr

Более лёгкий инструмент от 2ndQuadrant: автоматизации меньше, ручного управления больше. Хорошо подходит для небольших конфигураций.

Переключение при отказе в облачных сервисах

RDS, Cloud SQL и Aurora выполняют переключение при отказе за вас. Вы жертвуете гибкостью ради простоты эксплуатации.

Маршрутизация подключений после переключения

Приложениям нужно знать, какой сервер стал основным. Возможные варианты:

  • Обновление DNS (медленное из-за TTL)
  • Плавающий IP, которым управляет инструмент переключения при отказе
  • Слой прокси: HAProxy, pgbouncer со скриптом или конечная точка AWS RDS

Синхронная репликация и переключение при отказе

Синхронный резервный сервер гарантирует отсутствие потери данных. Сочетайте его с автоматическим переключением при отказе для максимальной HA.

Кворум

Для синхронной репликации задайте synchronous_standby_names с кворумом: ANY 2 из 3 реплик должны подтвердить операцию. Это позволяет пережить работу одной медленной или неисправной реплики без блокировки подтверждения транзакций.

synchronous_standby_names = 'ANY 2 (replica1, replica2, replica3)'

Чтение собственных записей

После переключения при отказе или при отставании репликации приложение может записать данные на новый основной сервер, а затем сразу прочитать устаревшие данные с реплики. Направляйте чтение после записи на основной сервер или отслеживайте состояние с помощью pg_last_wal_replay_lsn.

Тестирование переключения при отказе

Проверьте процедуру до того, как она понадобится. Ежемесячно отключайте основной сервер в тестовой среде. Отрабатывайте пошаговую инструкцию. Настоящее переключение при отказе и так создаёт достаточно стресса — неожиданности ни к чему.

Итоги

Автоматическое переключение при отказе исключает человека из критического пути.

  • Patroni и Stolon для самостоятельного управления
  • RDS и Cloud SQL для управляемых сервисов
  • Остерегайтесь раздвоения мозга — используйте кворум
  • Регулярно отрабатывайте переключение при отказе

Быстрая проверка

Что означает «раздвоение мозга» в контексте репликации PostgreSQL?

Часто задаваемые вопросы

Урок «Переключение при сбое и выбор лидера (Patroni, Stolon)» бесплатный?

Да — полный текст урока «Переключение при сбое и выбор лидера (Patroni, Stolon)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SQL Academy, подпишись на CoddyKit PRO. Курс SQL Academy содержит 4 уроков всего.

Чему я научусь в уроке «Переключение при сбое и выбор лидера (Patroni, Stolon)»?

Используйте Patroni или Stolon для автоматического переключения при сбое и настройте кворум, чтобы избежать расщепления кластера Ты практикуешь SQL Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать SQL Academy?

Предыдущий опыт не требуется. SQL Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Переключение при сбое и выбор лидера (Patroni, Stolon)»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке SQL Academy?

Да. Каждый урок SQL Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Потоковая репликация и WAL
  2. Логическая репликация для шардинга
  3. Переключение при сбое и выбор лидера (Patroni, Stolon)
  4. Реплики для чтения и маршрутизация соединений
← Назад к SQL Academy