Распределённые данные

Журнал упреждающей записи (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. Обычная страница PostgreSQL размером 8 КиБ может записаться частично при сбое. При full_page_writes=on полное содержимое страницы попадает в WAL при первом изменении после контрольной точки и позволяет восстановить такую страницу. Отключение требует другого доказанного механизма защиты от частичной записи.

    Граница применимости: PostgreSQL 18, обычный размер страницы 8192 байта. Пример из Reliability с 16 секторами по 512 байт иллюстрирует частичную запись и не задаёт размер сектора любого диска. full_page_writes не является резервной копией всей базы.

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

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

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

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

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

Не путать

Журнал упреждающей записи (WAL) Контрольная точка базы данных

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

Журнал упреждающей записи (WAL) Проверенное восстановление базы данных

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

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

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

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

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

  • Документация6
  • Официальная документация
    PostgreSQL 18 Documentation: Write-Ahead Logging PostgreSQL Global Development Group · PostgreSQL 18, Chapter 28.3 · проверено

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

    Утверждения: 01 · 02 · 03 · 07

  • Официальная документация
    PostgreSQL 18 Documentation: 28.5 WAL Configuration PostgreSQL Global Development Group · PostgreSQL 18, Chapter 28.5 · проверено

    Отдельная страница PostgreSQL 18, раздел 28.5: описывает сброс изменённых страниц, запись контрольной точки и позиции REDO, а также компромисс частоты контрольных точек между нагрузкой ввода-вывода и объёмом восстановления.

    Утверждения: 02

  • Официальная документация
    PostgreSQL 18 Documentation: WAL Configuration PostgreSQL Global Development Group · документация PostgreSQL 18, страница открыта 7 сентября 2026 года · проверено

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Проверить fsync, synchronous_commit=off/on/remote_write/remote_apply и условия ожидания синхронных реплик.

    Утверждения: 03 · 04 · 05

  • Официальная документация
    PostgreSQL 18 Documentation: Reliability PostgreSQL Global Development Group · документация PostgreSQL 18, страница открыта 7 сентября 2026 года · проверено

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

    Утверждения: 04 · 05

  • Официальная документация
    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.

    Утверждения: 06 · 07

  • Официальная документация
    Restore testing Amazon Web Services · AWS Backup Developer Guide, проверено 30 августа 2026 года · проверено

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

Карта знаний

Связанные понятия

Из знания — в навык

Курсы по теме

Подтвердите действие