WAL хранит записи для повторного применения изменений; контрольная точка задаёт опору локального восстановления и влияет на объём повторной работы. Она не заменяет сохранённый архив.
Журнал упреждающей записи (WAL)
Определение
Журнал упреждающей записи (WAL) — журнал изменений базы, записи которого попадают в устойчивое хранилище раньше самих изменённых страниц данных. Такой порядок позволяет повторно применить эти изменения и восстановить страницы после сбоя.
Также ищут: Write-Ahead Log · WAL · журнал предзаписи · transaction log
Зачем это знать
Подтверждение заказа не обязано ждать записи всех его страниц. Но обещание сохранности зависит от сброса журнала и работы хранилища, а восстановление из резервной копии требует отдельного набора материалов.
Карта понятия
Что подтверждено
Правило WAL требует устойчиво сохранить записи об изменениях до записи соответствующих изменённых страниц в файлы данных.
Граница применимости: Правило упреждающей записи PostgreSQL 18 при работающем механизме устойчивого сброса.
После сбоя PostgreSQL повторно применяет необходимые записи WAL от точки начала REDO, связанной с контрольной точкой, и восстанавливает изменения, не успевшие попасть в файлы данных.
Граница применимости: Локальное восстановление PostgreSQL 18 после сбоя; нужные файлы данных и WAL доступны.
При фиксации транзакции PostgreSQL не обязан сбрасывать все изменённые ею страницы: сохранённого WAL достаточно для их последующего восстановления. Ожидание устойчивого сброса самого WAL определяется synchronous_commit.
Граница применимости: Защита фиксации PostgreSQL 18 при корректном fsync; synchronous_commit=off ослабляет ожидание, а не правило WAL.
fsync=off может привести к невосстановимому повреждению базы после сбоя. Даже при fsync=on гарантия зависит от того, выполняет ли нижележащее хранилище запросы устойчивого сброса.
Граница применимости: Настройки WAL PostgreSQL 18 и требования к тракту хранения; наличие журнала само по себе недостаточно.
Обычная страница PostgreSQL размером 8 КиБ может записаться частично при сбое. При full_page_writes=on полное содержимое страницы попадает в WAL при первом изменении после контрольной точки и позволяет восстановить такую страницу. Отключение требует другого доказанного механизма защиты от частичной записи.
Граница применимости: PostgreSQL 18, обычный размер страницы 8192 байта. Пример из Reliability с 16 секторами по 512 байт иллюстрирует частичную запись и не задаёт размер сектора любого диска. full_page_writes не является резервной копией всей базы.
Для восстановления PostgreSQL из архивного WAL нужна подходящая базовая резервная копия. Отдельный набор сегментов WAL не содержит самостоятельного полного образа базы.
Граница применимости: Физическое архивное восстановление PostgreSQL 18; не описание логического дампа.
Контрольная точка ограничивает работу локального REDO, а архивирование сохраняет историю для другого пути восстановления. Успешная контрольная точка не подтверждает полноту архива WAL до выбранной цели.
Граница применимости: Сопоставление локального восстановления после сбоя и PITR PostgreSQL 18.
Не путать
WAL — один из материалов восстановления. Проверенное восстановление доказывает, что нужный набор материалов действительно возвращает базу к цели и что результат пригоден приложению.
Что проверить
- Зафиксируйте фактические fsync и synchronous_commit для транзакций заказа.
- Проверьте, что хранилище выполняет запросы устойчивого сброса при выбранном отказе.
- Обоснуйте состояние full_page_writes и защиту от частичной записи страницы.
- Отделите текущие сегменты для локального восстановления от сохраняемого архива.
- Проверьте совместимость базовой копии и непрерывность требуемого WAL.
- Испытайте восстановление после сбоя и отдельно восстановление из резервной копии.
- Запишите достигнутую точку и результат проверки данных заказа.
Первоисточники
- PostgreSQL 18 Documentation: Write-Ahead Logging
Описывает порядок устойчивой записи WAL до изменённых страниц, восстановление страниц из журнала после сбоя и фиксацию транзакций без обязательного сброса всех изменённых страниц.
- PostgreSQL 18 Documentation: 28.5 WAL Configuration
Отдельная страница PostgreSQL 18, раздел 28.5: описывает сброс изменённых страниц, запись контрольной точки и позиции REDO, а также компромисс частоты контрольных точек между нагрузкой ввода-вывода и объёмом восстановления.
Утверждения: 02
- PostgreSQL 18 Documentation: WAL Configuration
Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Проверить fsync, synchronous_commit=off/on/remote_write/remote_apply и условия ожидания синхронных реплик.
- PostgreSQL 18 Documentation: Reliability
Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Проверить выполнение сброса всем трактом хранения, энергозависимые кэши накопителя и контроллера и границы гарантии при потере питания.
- PostgreSQL 18 Documentation: Continuous Archiving and Point-in-Time Recovery
Связывает base backup, непрерывный WAL archive и проверяемый recovery target.
- Restore testing
Описывает периодический real restore, измерение duration, отдельный test account и optional validation до удаления test resources.