Sobes.tech
Назад к вопросам
Middle+
15

Если упал мастер Postgres, а Patroni переключил его на реплику, как об этом узнает SQL-сервер, который качает данные из Postgres?

Компании, где спрашивали
ФинГрад

Ответ от нейросети

sobes.tech AI

Когда Patroni переключает мастер на реплику (failover), происходит смена роли узла в кластере PostgreSQL. SQL-сервер, который подключается к базе, должен узнать о новом мастере, чтобы продолжить работу с записью.

Как это происходит:

  • Patroni управляет состоянием кластера и хранит информацию о текущем мастере в распределённом хранилище (например, Etcd, Consul или ZooKeeper).
  • Клиенты (SQL-серверы или приложения) обычно не подключаются напрямую к конкретному хосту, а используют виртуальный IP, DNS-имя или прокси, который перенаправляет запросы на текущий мастер.
  • При переключении Patroni обновляет виртуальный IP или DNS-запись, указывая на новый мастер.
  • SQL-сервер, который качает данные, при следующем подключении или при ошибке подключения повторно резолвит адрес и подключается к новому мастеру.

Если используется прокси (например, HAProxy или PgBouncer), он также обновляет маршрутизацию на новый мастер.

Таким образом, SQL-сервер узнаёт о смене мастера через инфраструктуру балансировки или обновление DNS/виртуального IP, а не напрямую от самого PostgreSQL.