Сколько часов живет один WAL по умолчанию

«Сколько часов живет один WAL по умолчанию» — вопрос из категории Базы данных, который задают на 24% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

По умолчанию PostgreSQL сохраняет WAL (Write-Ahead Log) файлы до тех пор, пока они не будут архивированы или удалены. Время жизни WAL не ограничено жестко часами, но зависит от настройки wal_keep_segments (или wal_keep_size в PostgreSQL 13+) и max_wal_size.

Если архивация WAL (archive_mode = on) включена, файлы удаляются после успешной архивации. Без архивации WAL могут накапливаться, пока не достигнут max_wal_size (по умолчанию 1GB), после чего старые сегменты удаляются.

Пример настройки в postgresql.conf:

wal_keep_size = 1024MB  # сохранять минимум 1GB WAL
max_wal_size = 4GB       # максимум перед checkpoint