1. Glossario/

Slot di replica logica

Logical Replication Slot

Lo slot di replica logica è una struttura persistente sul publisher PostgreSQL che memorizza la posizione di consumo dei WAL per ogni subscriber. Garantisce che nessuna modifica venga persa anche se il subscriber si disconnette temporaneamente: i segmenti WAL vengono trattenuti finché non sono stati consumati e confermati.

Perché esiste #

Senza uno slot, PostgreSQL recicla i segmenti WAL appena diventano superflui per il crash recovery — tipicamente in pochi minuti su sistemi attivi. Un subscriber disconnesso per un’ora si troverebbe con un buco irrecuperabile e l’unica via d’uscita sarebbe re-inizializzare la subscription da snapshot. Lo slot risolve questo problema mantenendo i WAL disponibili.

Il rischio dello slot orfano #

Uno slot smesso di consumare (subscriber crashato, dropped senza prima rimuovere lo slot, migrazione interrotta) continua a trattenere WAL all’infinito, riempiendo il disco del publisher. È la causa numero uno di outage da replica logica in produzione.

Monitoraggio essenziale #

La vista pg_replication_slots espone active (è in uso?), restart_lsn (da dove ripartirebbe), e calcolando il delta tra pg_current_wal_lsn() e restart_lsn si ottiene il volume di WAL trattenuto. Su sistemi critici è doveroso un allarme quando il delta supera una soglia (es. 10 GB) o quando uno slot resta active = false per troppo tempo. Dal PostgreSQL 13 esiste anche max_slot_wal_keep_size come cap di sicurezza.