Асинхронность разрешает подтверждать без реплики, а lag показывает её измеренный прогресс. Оценка потерь требует проверить доступность нужной истории в конкретном отказе.
Почему это важно
Одни и те же секунды могут скрывать задержку сети, записи или воспроизведения. Для чтения важна применённая история, для оценки сохранности — история, пережившая отказ, а для планирования нужны скорость и объём работы.
Что подтверждено
pg_stat_replication различает sent_lsn, write_lsn, flush_lsn и replay_lsn: отправленную, записанную, устойчиво сброшенную и воспроизведённую позиции WAL. Разницы между ними относятся к разным этапам, а не к одному универсальному отставанию.
Граница применимости: Мониторинг отправителя потоковой репликации PostgreSQL 18; сведения о реплике поступают с её подтверждениями.
Невоспроизведённый, но устойчиво сохранённый и доступный WAL может быть применён при восстановлении. Потерю при конкретном отказе определяет недоступная необходимая история, поэтому replay_lag и среднее отставание не доказывают соблюдение RPO при переключении.
Граница применимости: Сопоставление мониторинга и архивного восстановления PostgreSQL 18 с целью допустимой потери; успешное применение полной истории ещё нужно проверить.
write_lag, flush_lag и replay_lag измеряют время от локального сброса недавнего WAL до получения подтверждения соответствующего этапа реплики. Эти интервалы показывают недавнюю задержку подтверждения, а не прогноз времени, за которое реплика догонит основной сервер.
Граница применимости: Поля pg_stat_replication PostgreSQL 18; показатели вычисляются по последним доступным измерениям.
Догнавшая основной сервер реплика может сначала показывать последнее измеренное отставание, а при простое без нового WAL поля lag затем становятся NULL. NULL означает отсутствие текущего измерения и не должен подменяться доказательством нулевой задержки.
Граница применимости: write_lag, flush_lag и replay_lag в pg_stat_replication PostgreSQL 18 при полностью догнавшей неактивной системе.
Разность сопоставимых LSN даёт объём журнала между позициями, а не готовое число секунд. Время догоняния зависит от скорости поступления нового WAL и скорости нужного этапа обработки; один объём или прежнее lag не даёт такого прогноза.
Граница применимости: Инженерное сопоставление позиций и временных измерений PostgreSQL 18 при меняющейся нагрузке.
flush_lsn может продвигаться при отстающем replay_lsn: запись на устойчивый носитель и применение выполняют разные задачи. Для свежего чтения важен прогресс применения, а для анализа сохранности нельзя игнорировать уже сброшенный WAL.
Граница применимости: Этапы потоковой репликации PostgreSQL 18; устойчивость оценивается относительно выбранного отказа.
После переключения или восстановления возможны разные ветви истории PostgreSQL. Одного числового LSN недостаточно, чтобы доказать общую историю: перед сравнением позиций нужно учитывать линию времени и её происхождение.
Граница применимости: Сопоставление LSN мониторинга и timeline history PostgreSQL 18; разность позиций разных ветвей не доказывает объём недостающих изменений.
Не путать
RPO задаёт допустимую потерю относительно точки восстановления. Отставание показывает текущее состояние этапов репликации и становится частью доказательства лишь вместе с выбранным отказом и доступной историей.
Что проверить
- Подпишите этап и единицу каждого графика отставания.
- Сопоставляйте LSN только после проверки общей истории и линии времени.
- Разделите задержки отправки, записи, устойчивого сброса и применения.
- Показывайте отсутствие измерения NULL отдельно от измеренного нуля.
- Проверьте поведение мониторинга при простое и обрыве связи с репликой.
- Оцените накопившийся WAL вместе со скоростью поступления и обработки.
- При отказе установите доступную историю и достигнутую точку восстановления.
Первоисточники
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: Continuous Archiving and Point-in-Time Recovery
PostgreSQL Global Development Group · PostgreSQL 18, Chapter 25.3
Связывает base backup, непрерывный WAL archive и проверяемый recovery target.
Открыть первоисточникRecovery Point Objective — CSRC Glossary
National Institute of Standards and Technology · CSRC glossary по NIST SP 800-34 Rev. 1, проверено 29 августа 2026 года
Определяет RPO как точку во времени, до которой данные должны быть восстановлены после outage.
Открыть первоисточник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.
Открыть первоисточник