Replica logica per lo sharding
Utilizzi la replica logica PUBLICATION/SUBSCRIPTION per spostare tabelle tra cluster e supportare gli aggiornamenti di versione principale.
Replica logica per lo sharding è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 2 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.
Replica logica e fisica
La replica fisica replica i BYTE del WAL: interessa l'intero cluster e richiede la stessa versione. La replica logica replica le RIGHE: è possibile selezionare le tabelle e usare versioni diverse di PG:
- Sottoscrizione a tabelle specifiche
- Replica da PG 14 → PG 16 (per gli aggiornamenti!)
- Replica bidirezionale o multi-master, con le dovute precauzioni
- Possibilità di usare schemi diversi
Configurazione: publisher
Contrassegni il primario come publisher:
-- postgresql.conf
wal_level = logical
-- Create a publication:
CREATE PUBLICATION pub_orders FOR TABLE orders, order_items;
-- Or all tables in the database:
CREATE PUBLICATION pub_all FOR ALL TABLES;Configurazione: subscriber
Nel database di destinazione:
CREATE SUBSCRIPTION sub_orders
CONNECTION 'host=primary port=5432 user=repl dbname=mydb'
PUBLICATION pub_orders;Sincronizzazione iniziale
La sottoscrizione esegue una copia iniziale di tutte le tabelle corrispondenti, quindi trasmette le modifiche. Lo schema di destinazione deve corrispondere a quello di origine.
Caso d'uso: aggiornamento della versione principale
La replica logica è il metodo moderno per aggiornare Postgres con tempi di inattività minimi:
- Crei un cluster PG16
- Replichi logicamente da PG14 a PG16
- Esegua il passaggio delle applicazioni quando PG16 è aggiornato
- Arresti PG14
Caso d'uso: suddivisione di un database
Per suddividere un database enorme in database più piccoli:
- Pubblichi solo le tabelle necessarie a un nuovo servizio
- Esegua la sottoscrizione nel nuovo database
- Sposti le scritture dopo il completamento della sincronizzazione
Caso d'uso: repliche eterogenee
Replichi verso una replica di lettura con indici diversi oppure verso un Postgres per data warehouse con colonne aggiuntive per i report.
Conflitti
La replica logica non risolve automaticamente i conflitti. Se la stessa riga viene aggiornata su entrambi i lati, il subscriber si arresta con un errore. Per evitarlo:
- Scriva su un solo lato
- Usi REPLICA IDENTITY FULL per ottenere diagnosi più dettagliate
- Risolva manualmente i conflitti e riavvii la sottoscrizione
Modifiche allo schema
Il DDL NON viene replicato. Applichi manualmente le modifiche allo schema su entrambi i lati, in genere prima sul subscriber e poi sul publisher. In alternativa, usi l'estensione pglogical, che può replicare il DDL.
Replica parziale
Le versioni moderne di PG consentono di definire filtri sulle righe e liste di colonne per ogni pubblicazione:
CREATE PUBLICATION us_only FOR TABLE customers
WHERE (country = 'US');
CREATE PUBLICATION compact FOR TABLE users (id, email);Sharding con la replica logica
Sposti i tenant su uno shard dedicato:
- Pubblicazione sull'origine filtrata per un tenant
- Sottoscrizione dalla destinazione
- Passaggio dell'applicazione al nuovo shard
- Eliminazione dei dati del tenant dall'origine
Prestazioni e ritardo
La replica logica è principalmente a thread singolo per sottoscrizione. Le origini ad alto volume possono trarre vantaggio da più pubblicazioni o sottoscrizioni oppure da strumenti di terze parti come pglogical o Debezium.
Riepilogo
La replica logica abilita lo streaming a livello di riga.
- Tra versioni diverse e per tabelle parziali
- Aggiornamenti principali con tempi di inattività minimi
- La risoluzione dei conflitti è un problema SUO
- Il DDL non viene replicato
Controllo rapido
Deve aggiornare PostgreSQL dalla versione 14 alla 16 con tempi di inattività minimi. Quale tipo di replica è adatto?
Domande Frequenti
La lezione «Replica logica per lo sharding» è gratuita?
Sì — il testo completo di «Replica logica per lo sharding» è 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 logica per lo sharding»?
Utilizzi la replica logica PUBLICATION/SUBSCRIPTION per spostare tabelle tra cluster e supportare gli aggiornamenti di versione principale. 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 2 di 4.
Quanto tempo richiede la lezione «Replica logica per lo sharding»?
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
- Replica streaming e WAL
- Replica logica per lo sharding
- Failover ed elezione del leader (Patroni, Stolon)
- Read replica e instradamento delle connessioni