0Pricing
SQL Academy · Lezione

Replica streaming e WAL

Configuri la replica fisica streaming basata su WAL, monitori il ritardo e configuri repliche sincrone per scritture senza perdita di dati.

Replica streaming e WAL è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.

Perché replicare?

La replica permette di raggiungere diversi obiettivi:

  • HA — tollerare il guasto del primario
  • Scalabilità in lettura — distribuire le SELECT sulle repliche
  • Backup / PITR — archiviazione continua
  • Distribuzione geografica — repliche vicine agli utenti

WAL: Write-Ahead Log

Ogni scrittura viene registrata prima nel WAL. Il WAL garantisce la durabilità ed è alla base della replica: si invia il WAL in streaming a una replica → la replica riproduce il WAL → la replica è aggiornata.

Replica fisica in streaming

Flusso WAL byte per byte dal primario alla replica:

  • La replica è una copia binaria del primario
  • Stessa versione di Postgres
  • Viene replicato l'intero cluster (tutti i database e tutte le tabelle)
  • Sola lettura

Configurazione: primario

Configuri il primario in postgresql.conf:

wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB

-- pg_hba.conf: allow replication connections
host replication replicator 10.0.0.0/24 md5

Configurazione: replica

Crei il backup di base e avvii la replica con primary_conninfo:

pg_basebackup -h primary -D /var/lib/postgresql/data -U replicator -W -X stream -P

-- postgresql.conf on replica:
primary_conninfo = 'host=primary port=5432 user=replicator password=...'

-- Touch standby.signal file and start:
touch /var/lib/postgresql/data/standby.signal

Sincrona e asincrona

  • Async (impostazione predefinita) — il primario esegue il commit senza attendere; la replica può rimanere indietro
  • Sync — il primario attende la conferma della replica prima di eseguire COMMIT; nessuna perdita di dati, ma prestazioni inferiori
-- Synchronous configuration on primary:
synchronous_commit = on
synchronous_standby_names = 'replica1, replica2'

Ritardo della replica

Le repliche asincrone rimangono indietro rispetto al primario. Monitori:

SELECT client_addr, state, sent_lsn, write_lsn, replay_lsn,
       pg_wal_lsn_diff(sent_lsn, replay_lsn) AS replay_lag_bytes
FROM pg_stat_replication;

Slot di replica

Gli slot garantiscono che il primario conservi il WAL finché la replica non lo ha consumato:

SELECT pg_create_physical_replication_slot('replica1');

-- On replica:
primary_slot_name = 'replica1'

Problema degli slot

Se una replica si disconnette e non si riconnette mai, il suo slot impedisce la pulizia del WAL e il disco si riempie. Elimini gli slot inutilizzati:

SELECT pg_drop_replication_slot('replica1');

Repliche a cascata

Una replica può a sua volta trasmettere il WAL in streaming ad altre repliche, riducendo il carico sul primario.

Hot Standby

Per impostazione predefinita, le repliche accettano query di sola lettura (hot_standby = on). Query di lettura di lunga durata sulla replica possono ritardare la riproduzione del WAL; regoli max_standby_streaming_delay.

Promozione

Per trasformare una replica nel nuovo primario:

pg_ctl promote -D /var/lib/postgresql/data

-- Or in SQL:
SELECT pg_promote();

Riepilogo

La replica in streaming consiste nell'invio e nella riproduzione del WAL.

  • Fisica e identica a livello binario
  • Asincrona per impostazione predefinita; sincrona per evitare qualsiasi perdita di dati
  • Gli slot conservano il WAL, ma richiedono attenzione
  • La promozione trasforma una replica in un primario

Controllo rapido

Qual è il rischio principale di NON usare uno slot di replica per una replica in streaming?

Domande Frequenti

La lezione «Replica streaming e WAL» è gratuita?

Sì — il testo completo di «Replica streaming e WAL» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.

Cosa imparerò in «Replica streaming e WAL»?

Configuri la replica fisica streaming basata su WAL, monitori il ritardo e configuri repliche sincrone per scritture senza perdita di dati. Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare SQL Academy?

Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Replica streaming e WAL»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione SQL Academy?

Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Replica streaming e WAL
  2. Replica logica per lo sharding
  3. Failover ed elezione del leader (Patroni, Stolon)
  4. Read replica e instradamento delle connessioni
← Torna a SQL Academy