Limitar o WAL que os slots podem reter (max_slot_wal_keep_size)
PostgreSQLReplicaçãoComando
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;O que faz
Define um limite superior para o WAL que os replication slots podem manter no pg_wal (padrão -1 = ilimitado); quando excedido, o checkpoint remove o WAL antigo e o slot passa a wal_status = 'lost'. O parâmetro tem efeito com reload.
Quando usar
Como proteção em todo cluster que usa slots, contra o risco de um standby ou subscriber desconectado encher o disco do primário e parar o sistema inteiro.
Atenção
O limite prioriza manter o primário vivo em detrimento do dono do slot: um standby com slot 'lost' precisa ser reconstruído e uma subscription lógica recriada. Escolha um valor abaixo do espaço livre do disco do pg_wal, mas maior que o WAL gerado durante a indisponibilidade mais longa esperada. Se o wal_status for 'unreserved', o slot está prestes a ser perdido; dispare um alerta.