Impostazione della replica logica per l'istanza database RDS per PostgreSQL - Amazon Relational Database Service

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à.

Impostazione della replica logica per l'istanza database RDS per PostgreSQL

La seguente procedura mostra come avviare la replica logica tra due istanze database RDS per PostgreSQL. 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.

Nota

Il nodo node_name di un abbonato non può iniziare conrds.

Per creare il nodo publisher e definire le tabelle da replicare

Questi passaggi presuppongono che l'istanza database RDS per PostgreSQL abbia un database contenente una o più tabelle che desideri replicare in 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 tablename 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.

  1. 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.

    1. Crea una tabella di esempio utilizzando la seguente istruzione SQL.

      CREATE TABLE docs_lab_table (a int PRIMARY KEY);
    2. Popola la tabella con i dati generati utilizzando la seguente istruzione SQL.

      INSERT INTO docs_lab_table VALUES (generate_series(1,5000)); INSERT 0 5000
    3. Verifica che i dati siano presenti nella tabella utilizzando la seguente istruzione SQL.

      SELECT count(*) FROM docs_lab_table;
  2. Identifica l'istanza database RDS per PostgreSQL come nodo publisher, come indicato di seguito.

    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)
  3. 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 sia stata eseguita l'impostazione dell'istanza database RDS per PostgreSQL con l'estensione pglogical. Per ulteriori informazioni, consulta Impostazione dell'estensione pglogical.

  1. 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
  2. Nell'istanza database RDS per PostgreSQL del subscriber crea la stessa tabella presente nel publisher. 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);
  3. Verifica che questa tabella sia vuota.

    SELECT count(*) FROM docs_lab_table; count ------- 0 (1 row)
  4. Identifica l'istanza database RDS per PostgreSQL come nodo subscriber, come indicato di seguito.

    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)
  5. 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 questa operazione 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.