DBAtlas · Atlas für Datenbankbetrieb

Subscription entfernen und verwaisten logischen Slot auf dem Publisher bereinigen

PostgreSQLLogische Replikation

Befehl

-- Subscriber: while the publisher is unreachable DROP SUBSCRIPTION cannot drop the remote slot and fails; detach the slot first:
ALTER SUBSCRIPTION sub_app DISABLE;
ALTER SUBSCRIPTION sub_app SET (slot_name = NONE);
DROP SUBSCRIPTION sub_app;
-- Publisher: find and drop orphaned logical slots (including tablesync slots pg_<suboid>_sync_<relid>_<sysid>):
SELECT slot_name, active, pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), restart_lsn)) AS retained_wal FROM pg_replication_slots WHERE slot_type = 'logical' AND NOT active;
SELECT pg_drop_replication_slot('sub_app');

Was es tut

Löscht die Subscription, ohne den Remote-Slot anzufassen (slot_name = NONE); sucht und entfernt dann logische Slots auf dem Publisher, die keinen Consumer mehr haben, sowie übrig gebliebene tablesync-Slots.

Wann einsetzen

Wenn eine Subscription entfernt werden muss, während der Publisher nicht erreichbar ist, nach Abschluss einer Migration oder wenn ein logischer Slot mit active = false auf dem Publisher WAL ansammelt.

Vorsicht

Ein verwaister logischer Slot hält sowohl WAL als auch catalog_xmin zurück: Die Platte läuft voll und die Systemkataloge blähen auf. Nach dem Löschen des Slots kann diese Subscription jedoch nicht fortgesetzt werden; prüfe vor dem Löschen, dass kein Subscriber (auch keiner auf einem anderen Server) diesen Slot nutzt. Ein aktiver Slot lässt sich nicht löschen; der verbundene walsender muss zuerst beendet werden.

In DBAtlas öffnen →

Verwandte Einträge