Синхронный режим включает выбранное удалённое подтверждение в путь фиксации. Асинхронный подтверждает без него, поэтому наличие нужной истории на стороне переключения проверяют отдельно.
Почему это важно
Нужно решить, какой отказ должен пережить подтверждённый заказ и когда он должен стать виден на реплике. От этого зависят точка ожидания, выбор реплик и допустимая остановка новых подтверждений.
Что подтверждено
В PostgreSQL удалённое ожидание включается совместно настройками synchronous_standby_names и synchronous_commit. Само подключение резервного сервера или слово «синхронный» в его имени не задаёт гарантию фиксации.
Граница применимости: PostgreSQL 18; непустой выбор синхронных реплик и режим synchronous_commit, требующий удалённого подтверждения.
Ожидание удалённого подтверждения добавляет к фиксации передачу данных и выполнение выбранного этапа на реплике. Защиту от отказа общей площадки можно заявлять только при размещении нужной устойчивой копии вне этого отказа.
Граница применимости: Сопоставление синхронного ожидания PostgreSQL и модели размещения копий; число реплик само не доказывает независимость.
synchronous_commit=remote_write ждёт, пока требуемая реплика запишет WAL средствами своей ОС. Это защищает от сбоя процесса PostgreSQL на реплике, но не гарантирует сохранность этой удалённой записи при сбое её ОС.
Граница применимости: PostgreSQL 18; локальный WAL при remote_write также ожидает устойчивого сброса.
При synchronous_commit=on и заданных синхронных репликах подтверждение ждёт устойчивого сброса WAL на требуемых репликах. Ждать применения изменений для чтения этот режим не обязан.
Граница применимости: PostgreSQL 18; исправный тракт устойчивого хранения и выполнение выбранного числа подтверждений.
remote_apply ждёт, пока требуемая реплика воспроизведёт транзакцию, сделав её доступной новым подходящим снимкам чтения. Уже открытый старый снимок Repeatable Read от этого не становится новым.
Граница применимости: Сопоставление synchronous_commit=remote_apply и снимков чтения PostgreSQL 18; касается подтвердивших реплик.
synchronous_standby_names задаёт число подтверждений и множество допустимых реплик. FIRST выбирает требуемые реплики по приоритету; ANY допускает подтверждение от любого требуемого числа реплик из списка.
Граница применимости: PostgreSQL 18, режимы FIRST и ANY; подтверждение не означает ожидание всех существующих реплик.
Если достаточное число требуемых синхронных реплик не может подтвердить нужный этап, фиксация продолжает ждать. Отмена ожидания или потеря ответа не доказывает откат уже локально зафиксированной транзакции.
Граница применимости: Синхронное ожидание PostgreSQL 18; исход проверяют отдельно перед повтором деловой операции.
synchronous_commit можно менять для отдельных транзакций. Значение local сохраняет ожидание локального устойчивого WAL, но убирает удалённое; off убирает и ожидание локального сброса.
Граница применимости: PostgreSQL 18; наличие настроенных синхронных реплик не переопределяет ослабленный режим конкретной транзакции.
Не путать
Долговечность описывает сохранность подтверждённого результата при заданном отказе. Синхронная репликация помогает её обеспечить лишь в пределах точки ожидания и размещения требуемых копий.
Что проверить
- Выберите отказ, который должен пережить подтверждённый заказ.
- Проверьте synchronous_commit именно у транзакций приложения.
- Назовите удалённый этап: запись ОС, устойчивый сброс или применение.
- Зафиксируйте список реплик, число подтверждений и режим FIRST либо ANY.
- Проверьте независимость хранения и питания требуемых копий.
- Измерьте задержку подтверждения при обычной работе и деградации связи.
- Испытайте нехватку подтверждений и проверку исхода после отмены ожидания.
- Для чтения после записи выберите подтвердившую реплику и подходящий снимок.
Первоисточники
PostgreSQL 18 Documentation: WAL Configuration
PostgreSQL Global Development Group · документация PostgreSQL 18, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Проверить fsync, synchronous_commit=off/on/remote_write/remote_apply и условия ожидания синхронных реплик.
Открыть первоисточникPostgreSQL 18 Documentation: Replication
PostgreSQL Global Development Group · документация PostgreSQL 18, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Сверить synchronous_standby_names, FIRST/ANY и удержание WAL слотами.
Открыть первоисточникPostgreSQL 18 Documentation: Log-Shipping Standby Servers
PostgreSQL Global Development Group · PostgreSQL 18, Chapter 26.2
Фиксирует async default, synchronous commit wait points и связь replication delay с data loss.
Открыть первоисточникSecurity Guidelines for Storage Infrastructure
National Institute of Standards and Technology · NIST SP 800-209, October 2020
Разделяет backup, replication, immutability, continuous data protection и point-in-time copies; описывает synchronous и asynchronous replication.
Открыть первоисточникPostgreSQL 18 Documentation: Transaction Isolation
PostgreSQL Global Development Group · PostgreSQL 18, Chapter 13.2
Определяет isolation phenomena и фактическое поведение PostgreSQL levels, включая Serializable.
Открыть первоисточник