Ответ
По умолчанию 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