Распределённые данные · проверено по источникам

Отставание репликации

Отставание репликации — разница между прогрессом основного сервера и отдельными этапами на реплике: записью, устойчивым сбросом и применением журнала. Её описывают позициями, объёмом и временными измерениями.

Также ищут: Replication lag · лаг репликации · replica delay · replay lag

Практический смысл

Почему это важно

Одни и те же секунды могут скрывать задержку сети, записи или воспроизведения. Для чтения важна применённая история, для оценки сохранности — история, пережившая отказ, а для планирования нужны скорость и объём работы.

Доказательная часть

Что подтверждено

  1. pg_stat_replication различает sent_lsn, write_lsn, flush_lsn и replay_lsn: отправленную, записанную, устойчиво сброшенную и воспроизведённую позиции WAL. Разницы между ними относятся к разным этапам, а не к одному универсальному отставанию.

    Граница применимости: Мониторинг отправителя потоковой репликации PostgreSQL 18; сведения о реплике поступают с её подтверждениями.

  2. Невоспроизведённый, но устойчиво сохранённый и доступный WAL может быть применён при восстановлении. Потерю при конкретном отказе определяет недоступная необходимая история, поэтому replay_lag и среднее отставание не доказывают соблюдение RPO при переключении.

    Граница применимости: Сопоставление мониторинга и архивного восстановления PostgreSQL 18 с целью допустимой потери; успешное применение полной истории ещё нужно проверить.

  3. write_lag, flush_lag и replay_lag измеряют время от локального сброса недавнего WAL до получения подтверждения соответствующего этапа реплики. Эти интервалы показывают недавнюю задержку подтверждения, а не прогноз времени, за которое реплика догонит основной сервер.

    Граница применимости: Поля pg_stat_replication PostgreSQL 18; показатели вычисляются по последним доступным измерениям.

  4. Догнавшая основной сервер реплика может сначала показывать последнее измеренное отставание, а при простое без нового WAL поля lag затем становятся NULL. NULL означает отсутствие текущего измерения и не должен подменяться доказательством нулевой задержки.

    Граница применимости: write_lag, flush_lag и replay_lag в pg_stat_replication PostgreSQL 18 при полностью догнавшей неактивной системе.

  5. Разность сопоставимых LSN даёт объём журнала между позициями, а не готовое число секунд. Время догоняния зависит от скорости поступления нового WAL и скорости нужного этапа обработки; один объём или прежнее lag не даёт такого прогноза.

    Граница применимости: Инженерное сопоставление позиций и временных измерений PostgreSQL 18 при меняющейся нагрузке.

  6. flush_lsn может продвигаться при отстающем replay_lsn: запись на устойчивый носитель и применение выполняют разные задачи. Для свежего чтения важен прогресс применения, а для анализа сохранности нельзя игнорировать уже сброшенный WAL.

    Граница применимости: Этапы потоковой репликации PostgreSQL 18; устойчивость оценивается относительно выбранного отказа.

  7. После переключения или восстановления возможны разные ветви истории PostgreSQL. Одного числового LSN недостаточно, чтобы доказать общую историю: перед сравнением позиций нужно учитывать линию времени и её происхождение.

    Граница применимости: Сопоставление LSN мониторинга и timeline history PostgreSQL 18; разность позиций разных ветвей не доказывает объём недостающих изменений.

Граница терминов

Не путать

Асинхронная репликация

Асинхронность разрешает подтверждать без реплики, а lag показывает её измеренный прогресс. Оценка потерь требует проверить доступность нужной истории в конкретном отказе.

RPO

RPO задаёт допустимую потерю относительно точки восстановления. Отставание показывает текущее состояние этапов репликации и становится частью доказательства лишь вместе с выбранным отказом и доступной историей.

Перед спецификацией

Что проверить

  1. Подпишите этап и единицу каждого графика отставания.
  2. Сопоставляйте LSN только после проверки общей истории и линии времени.
  3. Разделите задержки отправки, записи, устойчивого сброса и применения.
  4. Показывайте отсутствие измерения NULL отдельно от измеренного нуля.
  5. Проверьте поведение мониторинга при простое и обрыве связи с репликой.
  6. Оцените накопившийся WAL вместе со скоростью поступления и обработки.
  7. При отказе установите доступную историю и достигнутую точку восстановления.
Открытые основания

Первоисточники

  • Официальная документация

    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.

    Открыть первоисточник
Сообщить об ошибке

Опишите проблему — постараемся исправить как можно скорее.

Спасибо!

Получили ваше сообщение.
Подтвердите действие