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à.
Configurazione della replica logica per il cluster SQL
La procedura seguente mostra come avviare la replica logica tra due cluster DB. RDSper istanze DB Postgre. SQL I passaggi presuppongono che sia l'origine (publisher) che la destinazione (subscriber) abbiano l'estensione pglogical
impostata come descritto dettagliatamente in Impostazione dell'estensione pglogical.
Per creare il nodo publisher e definire le tabelle da replicare
Questi passaggi presuppongono che il RDS, poiché l'istanza SQL DB Postgre ha un database con una o più tabelle da replicare su un altro nodo. È necessario ricreare la struttura delle tabelle dal publisher nel subscriber, quindi prima, se occorre, recupera la struttura delle tabelle. Puoi farlo utilizzando il metacomando psq1
\d
e quindi creando la stessa tabella nell'istanza subscriber. Nella procedura seguente viene illustrato come creare una tabella di esempio nel publisher (origine) a scopo dimostrativo.tablename
-
Utilizza
psql
per connetterti all'istanza che include la tabella da usare come origine per i subscriber.psql --host=
source-instance
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres
--password --dbname=labdb
Se non hai una tabella esistente da replicare, puoi creare una tabella di esempio come indicato di seguito.
-
Create una tabella di esempio utilizzando la seguente dichiarazione. SQL
CREATE TABLE docs_lab_table (a int PRIMARY KEY);
-
Compilate la tabella con i dati generati utilizzando la seguente SQL istruzione.
INSERT INTO docs_lab_table VALUES (generate_series(1,5000));
INSERT 0 5000
-
Verificate che i dati esistano nella tabella utilizzando la seguente SQL istruzione.
SELECT count(*) FROM docs_lab_table;
-
-
Identifica questo per l'istanza Postgre SQL DB come nodo editore, come segue.
SELECT pglogical.create_node( node_name := '
docs_lab_provider
', dsn := 'host=source-instance
.aws-region
.rds.amazonaws.com port=5432 dbname=labdb
');create_node ------------- 3410995529 (1 row)
-
Aggiungi la tabella da replicare al set di replica predefinito. Per ulteriori informazioni sui set di replica, consulta Replication sets
(Set di replica) nella documentazione di pglogical. SELECT pglogical.replication_set_add_table('default', '
docs_lab_table
', 'true', NULL, NULL);replication_set_add_table --------------------------- t (1 row)
L'impostazione del nodo publisher è completata. Ora puoi impostare il nodo subscriber per ricevere gli aggiornamenti dal publisher.
Per impostare il nodo subscriber e creare una sottoscrizione per ricevere gli aggiornamenti
Questi passaggi presuppongono che il per l'istanza Postgre SQL DB sia stato configurato con l'estensione. pglogical
Per ulteriori informazioni, consulta Impostazione dell'estensione pglogical.
-
Utilizza
psql
per connetterti all'istanza per cui vuoi ricevere gli aggiornamenti dal publisher.psql --host=
target-instance
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres
--password --dbname=labdb
-
Sul per abbonati RDS, per l'istanza SQL Postgre DB, crea la stessa tabella esistente nell'editore. In questo esempio, la tabella è
docs_lab_table
. È possibile creare la tabella come indicato di seguito.CREATE TABLE docs_lab_table (a int PRIMARY KEY);
-
Verifica che questa tabella sia vuota.
SELECT count(*) FROM docs_lab_table;
count ------- 0 (1 row)
-
Identifica questo per l'istanza Postgre SQL DB come nodo sottoscrittore, come segue.
SELECT pglogical.create_node( node_name := '
docs_lab_target
', dsn := 'host=target-instance
.aws-region
.rds.amazonaws.com port=5432 sslmode=require dbname=labdb
user=postgres
password=********
');create_node ------------- 2182738256 (1 row)
-
Crea la sottoscrizione.
SELECT pglogical.create_subscription( subscription_name := 'docs_lab_subscription', provider_dsn := 'host=
source-instance
.aws-region
.rds.amazonaws.com port=5432 sslmode=require dbname=labdb
user=postgres
password=*******
', replication_sets := ARRAY['default'], synchronize_data := true, forward_origins := '{}' );create_subscription --------------------- 1038357190 (1 row)
Una volta completato questo passaggio, i dati della tabella del publisher vengono creati nella tabella del subscriber. È possibile verificare che ciò sia avvenuto utilizzando la seguente query. SQL
SELECT count(*) FROM docs_lab_table;
count ------- 5000 (1 row)
Da questo momento in poi, le modifiche apportate alla tabella del publisher vengono replicate nella tabella del subscriber.