Асинхронная фиксация не ждёт удалённого этапа; синхронная ждёт его на выбранном числе реплик. В обоих случаях нужно отдельно назвать локальную политику и охваченный отказ.
Почему это важно
Подтверждение заказа меньше зависит от задержки реплики, но это не доказывает его наличие на новом основном сервере. При переключении нужно установить, какая история сохранилась и может быть воспроизведена.
Что подтверждено
Потоковая репликация PostgreSQL по умолчанию асинхронна: фиксация на основном сервере не ждёт подтверждения резервного. Передача и воспроизведение WAL идут отдельно от такого подтверждения клиенту.
Граница применимости: Потоковая репликация PostgreSQL 18 без удалённого синхронного ожидания.
При отказе основного сервера могут быть потеряны подтверждённые изменения, чья история WAL недоступна стороне восстановления. Величина риска зависит от реально сохранившейся истории в данном отказе; одно число задержки применения не определяет потери.
Граница применимости: Асинхронное переключение PostgreSQL 18; учитываются доступные копии WAL, а не только текущий ответ реплики.
Отсутствие удалённого ожидания не означает отсутствия локальной долговечности. synchronous_commit=local ждёт устойчивого локального WAL; synchronous_commit=off может подтвердить раньше его сброса.
Граница применимости: PostgreSQL 18; локальная политика фиксации и удалённая репликация — отдельные условия.
Готовая отвечать на запросы асинхронная реплика может ещё не воспроизвести подтверждённый на основном сервере заказ. Отсутствие заказа в таком чтении не доказывает, что фиксация не состоялась.
Граница применимости: Чтения с горячей резервной копии PostgreSQL 18 при отставании воспроизведения.
WAL может быть устойчиво сохранён на реплике раньше применения. Если нужная непрерывная история доступна и успешно воспроизводится, этот разрыв означает работу по применению и задержку видимости, а не уже доказанную потерю изменений.
Граница применимости: Сопоставление этапов потоковой репликации и восстановления PostgreSQL 18; получение без устойчивого хранения не даёт той же гарантии.
Если основной сервер уже удалил нужный реплике сегмент WAL, возобновить поток только с текущего места недостаточно. Реплика должна получить пропущенную историю из доступного архива либо быть заново создана из подходящей базовой копии.
Граница применимости: PostgreSQL 18; разрыв требуемой истории потоковой репликации.
Слот репликации удерживает нужный потребителю WAL, но это расходует место на основном сервере. Неограниченное отставание нельзя компенсировать обещанием бесконечного хранения; лимит удержания также может оставить реплику без нужных сегментов.
Граница применимости: PostgreSQL 18; удержание WAL слотами и предел max_slot_wal_keep_size.
Не путать
Асинхронность — правило подтверждения транзакции, а отставание — измеряемое состояние разных этапов. Нулевое наблюдаемое отставание не превращает режим подтверждения в синхронный.
Что проверить
- Отделите локальную политику фиксации от ожидания удалённой копии.
- Укажите допустимую потерю подтверждённых заказов для выбранного отказа.
- Измеряйте получение, устойчивый сброс и применение WAL раздельно.
- Не направляйте обязательную проверку свежего заказа на произвольную отстающую реплику.
- Перед переключением установите доступную историю 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.
Открыть первоисточникPostgreSQL 18 Documentation: Continuous Archiving and Point-in-Time Recovery
PostgreSQL Global Development Group · PostgreSQL 18, Chapter 25.3
Связывает base backup, непрерывный WAL archive и проверяемый recovery target.
Открыть первоисточник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: The Cumulative Statistics System
PostgreSQL Global Development Group · документация PostgreSQL 18, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Сверить pg_stat_replication: позиции LSN, write_lag/flush_lag/replay_lag, NULL после простоя и отсутствие прогноза догоняния.
Открыть первоисточникPostgreSQL 18 Documentation: Replication
PostgreSQL Global Development Group · документация PostgreSQL 18, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Сверить synchronous_standby_names, FIRST/ANY и удержание WAL слотами.
Открыть первоисточник