Назад к вопросам
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.