DBAtlas · Атлас эксплуатации баз данных

Ограничить WAL, который могут удерживать слоты (max_slot_wal_keep_size)

PostgreSQLРепликация

Команда

ALTER SYSTEM SET max_slot_wal_keep_size = '100GB';
SELECT pg_reload_conf();
SELECT slot_name, active, wal_status, pg_size_pretty(safe_wal_size) AS safe_wal_size FROM pg_replication_slots;

Что делает

Задаёт верхнюю границу WAL, который слоты репликации могут хранить в pg_wal (по умолчанию -1 = без ограничений); при превышении checkpoint удаляет старый WAL, и слот получает wal_status = 'lost'. Параметр вступает в силу через reload.

Когда использовать

Как защита в каждом кластере, использующем слоты, от риска того, что отключившийся standby или подписчик заполнит диск primary и остановит всю систему.

Внимание

Лимит отдаёт приоритет работоспособности primary за счёт владельца слота: standby со слотом 'lost' нужно пересоздать, а логическую подписку — создать заново. Выберите значение меньше свободного места на диске pg_wal, но больше объёма WAL, генерируемого за самый долгий ожидаемый простой. Если wal_status равен 'unreserved', слот вот-вот будет потерян; поднимите алерт.

Открыть в DBAtlas →

Связанные материалы