Выбор ответа Senior NoSQL и выбор хранилища обновлено

Что гарантирует синхронная репликация

Вопрос

В PostgreSQL настроены synchronous_standby_names = 'replica1' и synchronous_commit = on. Что это гарантирует?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Коммит ждёт записи WAL на диск реплики: подтверждённое не потеряется. При synchronouscommit = on мастер ждёт подтверждения, что синхронная реплика записала WAL на диск.

Варианты ответа

  1. Коммит ждёт записи WAL на диск реплики: подтверждённое не потеряетсяправильный ответ
  2. Реплика применяет изменения раньше мастера, и мастер ждёт применения
  3. Чтения с реплики всегда видят то же, что и мастер, сразу после коммита
  4. Если реплика упадёт, мастер продолжит принимать записи как обычно

Разбор

При synchronous_commit = on мастер ждёт подтверждения, что синхронная реплика записала WAL на диск. Это защищает от потери подтверждённых транзакций при падении мастера. Применение WAL на реплике может отставать, поэтому видимость для чтения гарантирует только remote_apply. Обратная сторона: если единственная синхронная реплика недоступна, коммиты на мастере зависают в ожидании, поэтому обычно держат кворум вида ANY 1 (replica1, replica2). Реплика никогда не применяет изменения раньше мастера.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.