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

Журнал упреждающей записи (WAL)

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

Также ищут: Write-Ahead Log · WAL · журнал предзаписи · transaction log

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

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

Подтверждение заказа не обязано ждать записи всех его страниц. Но обещание сохранности зависит от сброса журнала и работы хранилища, а восстановление из резервной копии требует отдельного набора материалов.

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

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

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

    Граница применимости: Правило упреждающей записи PostgreSQL 18 при работающем механизме устойчивого сброса.

  2. После сбоя PostgreSQL повторно применяет необходимые записи WAL от точки начала REDO, связанной с контрольной точкой, и восстанавливает изменения, не успевшие попасть в файлы данных.

    Граница применимости: Локальное восстановление PostgreSQL 18 после сбоя; нужные файлы данных и WAL доступны.

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

    Граница применимости: Защита фиксации PostgreSQL 18 при корректном fsync; synchronous_commit=off ослабляет ожидание, а не правило WAL.

  4. fsync=off может привести к невосстановимому повреждению базы после сбоя. Даже при fsync=on гарантия зависит от того, выполняет ли нижележащее хранилище запросы устойчивого сброса.

    Граница применимости: Настройки WAL PostgreSQL 18 и требования к тракту хранения; наличие журнала само по себе недостаточно.

  5. full_page_writes сохраняет в WAL полное содержимое страницы при первом изменении после контрольной точки. Эта защита позволяет восстановить страницу, запись которой прервал сбой; отключение требует другого доказанного механизма защиты от частичной записи.

    Граница применимости: PostgreSQL 18; защита страниц от частичной записи, а не резервное копирование всего кластера.

  6. Для восстановления PostgreSQL из архивного WAL нужна подходящая базовая резервная копия. Отдельный набор сегментов WAL не содержит самостоятельного полного образа базы.

    Граница применимости: Физическое архивное восстановление PostgreSQL 18; не описание логического дампа.

  7. Контрольная точка ограничивает работу локального REDO, а архивирование сохраняет историю для другого пути восстановления. Успешная контрольная точка не подтверждает полноту архива WAL до выбранной цели.

    Граница применимости: Сопоставление локального восстановления после сбоя и PITR PostgreSQL 18.

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

Не путать

Контрольная точка базы данных

WAL хранит записи для повторного применения изменений; контрольная точка задаёт опору локального восстановления и влияет на объём повторной работы. Она не заменяет сохранённый архив.

Проверенное восстановление базы данных

WAL — один из материалов восстановления. Проверенное восстановление доказывает, что нужный набор материалов действительно возвращает базу к цели и что результат пригоден приложению.

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

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

  1. Зафиксируйте фактические fsync и synchronous_commit для транзакций заказа.
  2. Проверьте, что хранилище выполняет запросы устойчивого сброса при выбранном отказе.
  3. Обоснуйте состояние full_page_writes и защиту от частичной записи страницы.
  4. Отделите текущие сегменты для локального восстановления от сохраняемого архива.
  5. Проверьте совместимость базовой копии и непрерывность требуемого WAL.
  6. Испытайте восстановление после сбоя и отдельно восстановление из резервной копии.
  7. Запишите достигнутую точку и результат проверки данных заказа.
Открытые основания

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

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

    PostgreSQL 18 Documentation: Write-Ahead Logging

    PostgreSQL Global Development Group · PostgreSQL 18, Chapter 28.3

    Определяет write-ahead rule, REDO crash recovery и роль checkpoint.

    Открыть первоисточник
  • Официальная документация

    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: Reliability

    PostgreSQL Global Development Group · документация PostgreSQL 18, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Проверить выполнение сброса всем трактом хранения, энергозависимые кэши накопителя и контроллера и границы гарантии при потере питания.

    Открыть первоисточник
  • Официальная документация

    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.

    Открыть первоисточник
  • Официальная документация

    Restore testing

    Amazon Web Services · AWS Backup Developer Guide, проверено 30 августа 2026 года

    Описывает периодический real restore, измерение duration, отдельный test account и optional validation до удаления test resources.

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

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

Спасибо!

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