Limiter le WAL que les slots peuvent retenir (max_slot_wal_keep_size)
PostgreSQLRéplicationCommande
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;Ce que fait la commande
Fixe une limite au WAL que les replication slots peuvent conserver dans pg_wal (-1 par défaut = illimité) ; en cas de dépassement, le checkpoint supprime l'ancien WAL et le slot passe à wal_status = 'lost'. Le paramètre prend effet par reload.
Quand l'utiliser
Comme garde-fou sur tout cluster utilisant des slots, contre le risque qu'une standby ou un abonné déconnecté remplisse le disque de la primaire et arrête tout le système.
Attention
La limite privilégie la survie de la primaire au détriment du propriétaire du slot : une standby dont le slot est 'lost' doit être reconstruite et une souscription logique recréée. Choisissez une valeur inférieure à l'espace libre du disque de pg_wal mais supérieure au WAL généré pendant la plus longue interruption prévisible. Si wal_status vaut 'unreserved', le slot est sur le point d'être perdu ; déclenchez une alerte.