Nota

Sincronizzazione tra più aree del database OCI con PostgreSQL utilizzando l'estensione pglogical

Introduzione

L'estensione pglogical consente la replica logica in più database Oracle Cloud Infrastructure (OCI) con istanze PostgreSQL. Supporta la replica PostgreSQL tra più versioni e facilita la sincronizzazione dei dati tra i database distribuiti nei domini di disponibilità regionali e locali all'interno di OCI. Inoltre, consente la replica tra i database ospitati sul servizio PostgreSQL gestito da più provider cloud e le istanze PostgreSQL della community autogestite, sia in esecuzione nel cloud che on-premise, offrendo una soluzione di replica altamente flessibile e interoperabile.

Utilizzando un modello di pubblicazione/sottoscrizione, pglogical consente alla replica in streaming logica di replicare le modifiche a tabelle, sequenze e altri oggetti da un publisher a un sottoscrittore. Questa estensione è ideale per una varietà di casi d'uso, tra cui:

Limitazioni

L'estensione pglogica potrebbe non essere adatta a determinati casi d'uso a causa delle seguenti limitazioni:

Per ulteriori informazioni, vedere Limitazioni e restrizioni.

Obiettivi

Prerequisiti

Task 1: Stabilire la comunicazione tra database

Per connettersi al sistema DB in tutte le aree, è necessario impostare il peering VCN.

Per creare il peering VCN mediante il gateway di instradamento dinamico (DRG), attenersi ai task secondari riportati di seguito.

Task 1.1: Collega DRG a VCN

  1. Crea una VCN nell'area di origine e nell'area di destinazione in base alle tue esigenze.

  2. Crea gateway di instradamento dinamico (DRG) nelle aree di origine e di destinazione in base alle tue esigenze.

  3. Per collegare il DRG alla VCN, selezionare il DRG nell'area di origine. Fare clic su Collegamenti VCN e su Crea collegamento rete cloud virtuale.

  4. Nella pagina Crea allegato VCN immettere il nome dell'allegato, quindi selezionare VCN-A (VCN area di origine), quindi fare clic su Crea allegato VCN.

  5. Ripetere gli stessi passi per collegare la VCN di destinazione.

Per ulteriori informazioni, vedere Gateway di instradamento dinamico.

Task 1.2: Creazione connessione peering remoto (RPC)

  1. Creare RPC dell'area di origine (SOR-RPC).

  2. Andare alla pagina dei dettagli di SOURCE DRG e fare clic su Allegati di connessione peering remoto.

  3. Fare clic su Crea connessione peering remoto.

  4. Nella pagina Crea connessione peering remoto, immettere il nome della connessione e selezionare il compartimento, quindi fare clic su Crea connessione peering remoto.

  5. Per creare l'RPC dell'area di destinazione (TAR-RPC), ripetere la stessa procedura per creare l'RPC dell'area di destinazione.

Task 1.3: Stabilisci connessione RPC

Stabilire la connessione dall'area di origine all'area di destinazione tramite la connessione SOR-RPC.

  1. Andare alla pagina dei dettagli di SOURCE DRG e fare clic su Allegati di connessione peering remoto.

  2. Visualizzare i dettagli di SOR-RPC facendo clic sul nome della connessione nella colonna Connessione peering remoto.

  3. Nella pagina dei dettagli della connessione fare clic su Stabilisci connessione, immettere il nome della connessione e selezionare il compartimento.

  4. Nella pagina Stabilisci connessione, selezionare l'area nome area di destinazione e immettere l'OCID dell'RPC di destinazione (TAR-RPC). Quando viene stabilita la connessione, lo stato dell'RPC viene modificato in PEERED.

    Pertanto, anche lo stato del peering TAR-RPC viene modificato in PEERED.

Task 1.4: Configurare la tabella di instradamento nelle reti VCN per inviare il traffico destinato al collegamento DRG

  1. Configurare la tabella di instradamento in Source-VCN per inviare traffico al CIDR della subnet privata Target-VCN.

  2. Andare alla pagina dei dettagli di Source-VCN e fare clic su Tabelle instradamento.

  3. Nell'elenco delle tabelle di instradamento fare clic sulla tabella di instradamento per la subnet privata - Origine - VCN.

  4. Nella pagina della tabella di instradamento fare clic su Aggiungi regole di instradamento e immettere le informazioni sulla regola di instradamento in base alle proprie esigenze.

  5. Per configurare la tabella di instradamento in Target-VCN per inviare traffico al CIDR della subnet privata della VCN di origine, ripetere le stesse operazioni eseguite in precedenza per configurare la tabella di instradamento per la subnet privata della VCN di origine.

Task 1.5: aggiungere la regola di entrata della sicurezza per consentire il traffico tra le subnet private delle reti VCN tramite DRG

  1. Aggiungere una regola di entrata alla lista di sicurezza per la VCN di origine della subnet privata della VCN di origine per consentire il traffico proveniente dalla subnet Target-VCN-private alla subnet Source-VCN-private

  2. Andare alla pagina dei dettagli di Source-VCN e fare clic su Elenco sicurezza e Elenco sicurezza per subnet privata - Origine - VCN.

  3. Nella pagina Elenco sicurezza fare clic su Aggiungi regole di entrata e immettere le informazioni sulla regola di entrata in base alle proprie esigenze.

  4. Per aggiungere la regola di entrata alla lista di sicurezza per la subnet privata-VCN di destinazione della Target-VCN per consentire il traffico proveniente dalla subnet Source-VCN-private alla subnet Target-VCN-private, ripetere gli stessi passi eseguiti in precedenza per aggiungere la regola di entrata per la VCN di destinazione, ma utilizzare la regola di entrata appropriata.

Task 1.6: Test e convalida della connettività del database tra più aree

Connettersi a Source-VM per verificare la connettività al database di destinazione e convalidare contemporaneamente la connettività del database di origine dalla VM di destinazione per garantire la comunicazione bidirezionale.

Task 2: Configura voce record A

È necessario configurare una voce record A per risolvere il nome dominio completamente qualificato (FQDN) del sistema di database in più aree. In questo tutorial, l'area di Mumbai funge da regione di destinazione.

  1. Passare all'area di destinazione (Mumbai), immettere DNS nella barra di ricerca e selezionare Viste private.

  2. Verrà visualizzata la lista VCN per l'area corrente. Selezionare la VCN in cui è già configurato il gateway DRG.

  3. Verrà visualizzato l'elenco delle zone DNS, incluso il nome FQDN del sistema di database a Mumbai.

  4. Aggiungere una voce per il sistema di database remoto.

    1. Fare clic su Crea zona.

      immagine

    2. In Nome area immettere il nome FQDN del sistema di database nell'altra area (Ashburn).

    3. Fare clic su Crea per aggiungere la nuova voce di zona.

  5. Configurare la voce record A.

    1. Aprire la zona appena creata, fare clic su Gestisci record e selezionare Aggiungi record.

    2. Immettere le informazioni riportate di seguito.

      • Nome: immettere un nome.

      • Tipo: selezionare A (IPv4 Address).

      • TTL: immettere 3600 secondi (modificare in base al requisito dell'applicazione).

      • Modalità RDATA: selezionare Base.

      • Indirizzo: immettere l'indirizzo IP dell'endpoint primario del sistema di database nell'altra area.

  6. Fare clic su Salva modifiche, quindi su Pubblica modifiche per applicare la configurazione.

    Con questa impostazione, il sistema di database B (Mumbai) ora può risolvere e connettersi al sistema di database A (Ashburn) utilizzando il nome FQDN, consentendo una comunicazione perfetta tra più aree del database.

Task 3: Creare sistemi di database in tutta l'area

Distribuisci un database PostgreSQL in tutte le aree di OCI per stabilire una solida strategia di Disaster Recovery (DR). Per ulteriori informazioni sulla creazione di un database PostgreSQL in OCI, vedere Creazione di un sistema di database.

Task 4: Abilita estensione pglogica in tutta l'area

Questa esercitazione descrive l'implementazione del DR designando Ashburn come area di origine e Mumbai come area di destinazione.

  1. Nell'area Ashburn eseguire il login a OCI Console, andare al database PostgreSQL, selezionare il sistema di database e modificare le impostazioni di configurazione accedendo al file di configurazione.

    immagine

  2. Si verrà reindirizzati al file di configurazione completo. Selezionare Copia configurazione per continuare, che visualizzerà la pagina seguente.

    immagine

  3. Inserire le informazioni richieste in base alle specifiche. Quindi, andare a Variabili utente (lettura/scrittura), fare clic su Aggiungi un'altra variabile e selezionare Nome variabile rispettivamente come wal_level e track_commit_timestamp e Valore variabile come logical e 1.

  4. In Configura estensioni selezionare pglogical come estensioni PostgreSQL.

  5. Fare clic su Crea per generare il file di configurazione.

    immagine

  6. Passare al sistema di database, selezionare Modifica in Configurazione e applicare la configurazione creata in precedenza al sistema di database.

  7. Nel sistema di database verrà visualizzato lo stato Aggiornamento. Attendere che diventi Attivo prima di continuare.

  8. Una volta attive, eseguire il login al sistema di database e verificare le estensioni abilitate utilizzando la query seguente.

    SHOW oci.admin_enabled_extensions;
    
  9. Creare l'estensione pglogical utilizzando il comando seguente.

    CREATE EXTENSION pglogical;
    

    Di seguito viene fornito un esempio di output dei comandi.

    pglogical_source=> show oci.admin_enabled_extensions ;
    oci.admin_enabled_extensions
    ------------------------------
    pglogical
    (1 row)
    
    pglogical_source=> create extension pglogical;
    CREATE EXTENSION
    
  10. Ripetere la stessa procedura nel database dell'altra area (Mumbai) per abilitare l'estensione pglogica.

Task 5: Configurazione del database di origine

Eseguire la query seguente per concedere le autorizzazioni sul database di origine per abilitare la replica logica.

alter role psql with replication;
grant EXECUTE on FUNCTION pg_catalog.pg_replication_origin_session_reset() to psql ;
grant EXECUTE on FUNCTION pg_catalog.pg_replication_origin_session_setup to psql ;
grant all on FUNCTION pg_catalog.pg_replication_origin_session_setup to psql;

'psql' è l'utente di esempio creato durante il processo di impostazione del database.

Task 6: Impostazione della replica dell'estensione pglogical nel database di origine

  1. Creare il nodo publisher nel database di origine.

    SELECT pglogical.create_node(node_name := 'provider1',dsn :='host=primary.xxxxxxxxx.postgresql.us-ashburn-1.oci.oraclecloud.com port=5432 user=xxxx password=xxxxx dbname=pglogical_source');
    
    • node_name: Specificare il nome del publisher da creare nel database di origine.
    • host: Immettere il nome dominio completamente qualificato (FQDN) del database di origine.
    • port_number: Fornire la porta su cui è in esecuzione il database di origine.
    • database_name: Specificare il database in cui verrà creata la pubblicazione.
  2. Includere tutte le tabelle nello schema pubblico nel set di replica predefinito.

    SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);
    

Task 7: Configura database di destinazione

Eseguire la query seguente per concedere le autorizzazioni sul database di destinazione per abilitare la replica logica.

alter role psql with replication;
grant EXECUTE on FUNCTION pg_catalog.pg_replication_origin_session_reset() to psql ;
grant EXECUTE on FUNCTION pg_catalog.pg_replication_origin_session_setup to psql ;
grant all on FUNCTION pg_catalog.pg_replication_origin_session_setup to psql;

'psql' è l'utente di esempio creato durante il processo di impostazione del database.

Dopo aver concesso le autorizzazioni necessarie, replicare tutti gli oggetti necessari nel database di destinazione in modo che corrispondano alla struttura del database di origine.

Task 8: Impostazione della replica pglogical nel database di destinazione

  1. Creare il nodo sottoscrittore nel database di destinazione.

    SELECT pglogical.create_node(node_name := 'subscriber1',dsn :='host=primary.xxxxxxx.postgresql.ap-mumbai-1.oci.oraclecloud.com port=5432 user=xxxx password=xxxxx dbname=pglogical_target');
    
    • node_name: Definire il nome del sottoscrittore nel database di destinazione.
    • host: Immettere il nome dominio completamente qualificato (FQDN) del database di destinazione.
    • port_number: Immettere la porta su cui è in esecuzione il database di destinazione.
    • database_name: Fornire il nome del database in cui verrà creata la sottoscrizione.
  2. Creare la sottoscrizione sul nodo sottoscrittore, che avvierà i processi di sincronizzazione e replica in background.

    SELECT pglogical.create_subscription(subscription_name := 'subscription1',provider_dsn := 'host=primary.xxxxxxxx.postgresql.us-ashburn-1.oci.oraclecloud.com port=5432 user=xxxx password=xxxxxx dbname=pglogical_source sslmode=verify-full sslrootcert=/etc/opt/postgresql/ca-bundle.pem');
    
    SELECT pglogical.wait_for_subscription_sync_complete('subscription1');
    
    • subscription_name: Fornire il nome della sottoscrizione.
    • host: Fornire il nome FQDN del database di origine.
    • port_number: Fornire la porta su cui è in esecuzione il database di destinazione.
    • database_name: Fornire il nome del database d'origine.

    Nota: assicurarsi di utilizzare sslmode=verify-full e sslrootcert = /etc/opt/postgresql/ca-bundle.pem nella stringa di creazione della sottoscrizione per evitare errori di connessione.

Task 9: verifica dello stato della sottoscrizione

Eseguire l'istruzione seguente per controllare lo stato della sottoscrizione nel database di destinazione.

select * from pglogical.show_subscription_status();

Task 10: verifica dell'esecuzione della replica dei dati

Eseguire l'istruzione seguente per controllare lo stato della replica nel database di origine.

SELECT * FROM pg_stat_replication;

Task 11: (Facoltativo) Arrestare o avviare la replica

Nota: in subscription_name immettere il nome della sottoscrizione creata nella destinazione.

Task 12: (Facoltativo) Eliminare la sottoscrizione

Per eliminare la sottoscrizione nel database di destinazione, eseguire il comando seguente.

select pglogical.drop_subscription('subscription_name');

Nota: in subscription_name immettere il nome della sottoscrizione creata nella destinazione.

Risoluzione dei problemi

Passi successivi

Questa esercitazione fornisce un approccio completo all'implementazione di una soluzione DR in tutte le aree del database OCI con PostgreSQL utilizzando l'estensione pglogical. Copre il processo di configurazione, la replica dei dati e la risoluzione dei problemi comuni.

Inoltre, questo metodo può essere applicato agli aggiornamenti PostgreSQL, garantendo tempi di inattività minimi e consentendo un cutover agevole delle applicazioni una volta che il database di destinazione è completamente sincronizzato con l'origine.

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.

Per la documentazione del prodotto, visitare Oracle Help Center.