Sobes.tech
Senior
12

Что происходит когда старый мастер PostgreSQL поднимается после падения? Как обеспечивается согласованность?

Компании, где спрашивали
МВидео/эльдорадо

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

sobes.tech AI

Когда старый мастер PostgreSQL, который упал, пытается подняться после сбоя, возникает риск рассогласования данных с новым мастером, если произошёл failover и новый мастер уже принял записи, которых нет на старом.

Чтобы обеспечить согласованность и избежать «разделения мозга» (split-brain), PostgreSQL обычно используется в связке с системами репликации и менеджерами кластеров (например, Patroni, Pacemaker), которые контролируют статус мастера.

Если старый мастер поднимается, он проверяет свою позицию в журнале транзакций (WAL) относительно текущего мастера. Если он отстал и не синхронизирован, он не может просто стать мастером снова — он должен перейти в режим реплики и догнать текущий мастер, применяя недостающие WAL-записи.

Таким образом, согласованность достигается за счёт:

  • Контроля статуса мастера внешними сервисами.
  • Принудительного переключения старого мастера в режим реплики, если он отстал.
  • Репликации и применения WAL для синхронизации данных.

Это предотвращает расхождение данных и гарантирует, что в кластере всегда один мастер с актуальными данными.