Von Slots zurückhaltbares WAL begrenzen (max_slot_wal_keep_size)
PostgreSQLReplikationBefehl
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;Was es tut
Setzt eine Obergrenze für das WAL, das Replication Slots in pg_wal halten dürfen (Standard -1 = unbegrenzt); bei Überschreitung entfernt der Checkpoint altes WAL und der Slot erhält wal_status = 'lost'. Der Parameter wirkt nach einem Reload.
Wann einsetzen
Als Schutz auf jedem Cluster mit Slots gegen das Risiko, dass ein getrennter Standby oder Subscriber die Platte der Primary füllt und das ganze System stoppt.
Vorsicht
Das Limit sichert das Weiterlaufen der Primary auf Kosten des Slot-Eigentümers: Ein Standby mit 'lost'-Slot muss neu aufgebaut und eine logische Subscription neu angelegt werden. Wähle einen Wert unterhalb des freien Platzes der pg_wal-Platte, aber größer als das WAL, das während des längsten erwarteten Ausfalls entsteht. Ist wal_status 'unreserved', steht der Slot kurz vor dem Verlust; löse einen Alarm aus.