Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Replica logica
La replica logica è un metodo per replicare gli oggetti di dati e le relative modifiche in base all'identità di replica degli oggetti e alle relative modifiche. La replica logica utilizza un modello di pubblicazione e sottoscrizione in cui uno o più abbonati sottoscrivono una o più pubblicazioni su un nodo publisher. Gli abbonati estraggono i dati dalle pubblicazioni a cui sono abbonati.
La replica logica offre un controllo granulare sia sulla replica che sulla sicurezza dei dati. È possibile utilizzare la replica logica nei seguenti casi d'uso:
Replica tra diverse versioni principali di PostgreSQL
Replica tra istanze PostgreSQL su piattaforme diverse (ad esempio, da Linux a Windows)
Architettura
Le seguenti fasi del flusso di lavoro mostrano come funziona un'architettura di replica logica:
Si scatta un'istantanea dei dati nel database dell'editore e si copiano i dati nel database dei sottoscrittori.
Le modifiche nei database degli editori vengono inviate al sottoscrittore in tempo reale.
L'abbonato applica i dati nello stesso ordine dell'editore, in modo da garantire la coerenza delle transazioni per le pubblicazioni incluse in un unico abbonamento.
Una pubblicazione può essere definita su un'istanza principale (editore). Una pubblicazione è un insieme di modifiche generate da una tabella o da un gruppo di tabelle. È possibile scegliere le modifiche da una combinazione di operazioni INSERT, UPDATE, DELETE e TRUNCATE. Per impostazione predefinita, tutte queste modifiche vengono replicate nel database dei sottoscrittori. Ciò è in contrasto con la replica fisica, in cui per la replica vengono utilizzati indirizzi di blocco esatti. byte-by-byte
Una tabella pubblicata deve avere una REPLICA IDENTITYfull
Ciò significa che l'intera riga diventa la chiave. Si consiglia di impostare l'identità di replica full
come ultima risorsa, poiché questa impostazione è inefficiente.
Un abbonamento è l'aspetto secondario della replica logica. Il nodo in cui viene definito un abbonamento viene definito sottoscrittore. Un abbonamento definisce la connessione a un altro database e a un insieme di pubblicazioni (una o più) a cui desidera abbonarsi.
Impostazioni di configurazione
Le seguenti configurazioni sono necessarie per le impostazioni dell'editore:
Impostato su
wal_level
.logical
Impostato
max_replication_slots
per contenere almeno il numero di abbonamenti previsti per la connessione e alcuni slot di riserva per la sincronizzazione delle tabelle.Impostato
max_wal_senders
per ospitaremax_replication_slots
e il numero di repliche fisiche.
Le seguenti configurazioni sono necessarie per le impostazioni degli abbonati:
Impostato
max_replication_slots
per contenere il numero minimo di abbonamenti che intendi aggiungere al sottoscrittore e alcuni abbonamenti di riserva per la sincronizzazione delle tabelle.Impostato
max_logical_replication_workers
per contenere almeno il numero di sottoscrizioni e alcuni worker di riserva per la sincronizzazione delle tabelle.Impostare
max_worker_processes
almeno su (max_logical_replication_workers
+1
).
Ogni sottoscrizione riceve le modifiche tramite uno slot di replica.
I passaggi seguenti mostrano come eseguire la replica logica:
Crea un editore utilizzando il comando CREATE PUBLICATION
per un gruppo di tabelle (che faranno parte della replica) nel database di origine. Crea un sottoscrittore utilizzando il comando CREATE SUBSCRIPTION
, quindi fornisci i dettagli della pubblicazione quando crei il sottoscrittore. Il caricamento iniziale dei dati inizia automaticamente dal database di origine al database di destinazione.
I dati di modifica acquisiti dagli slot di replica vengono replicati nel database di destinazione.
Usa pg_stat_replication
(una tabella di catalogo) per verificare lo stato della replica. Usa pg_stat_replication_slots per controllare lo slot di replica.
Per ulteriori informazioni, consulta il post Utilizzo della replica logica per replicare Amazon RDS gestito per PostgreSQL e Amazon Aurora per PostgreSQL autogestito
Limitazioni
Ti consigliamo di considerare le seguenti limitazioni del metodo di replica logica prima di iniziare la migrazione:
La replica logica presenta attualmente il maggior numero di restrizioni e lacune di funzionalità.
La replica logica non è in grado di replicare operazioni in linguaggio di definizione dei dati (DDL), sequenze e operazioni su oggetti di grandi dimensioni. Un'azione di troncatura (che si applica a una tabella con una chiave esterna) deve includere tabelle correlate nella stessa sottoscrizione.
Per ulteriori informazioni sui limiti della replica logica, vedere 31.6. Restrizioni