Esegui provisioning del database OCI con PostgreSQL ed esegui la migrazione da ambienti on-premise con tempi di inattività minimi utilizzando OCI GoldenGate

Introduzione

Oracle Cloud Infrastructure Database con PostgreSQL (OCI Database con PostgreSQL) è un servizio completamente gestito compatibile con PostgreSQL che offre prestazioni 3 volte più elevate attraverso lo storage ottimizzato del database, metà costo rispetto ad Amazon Web Service (AWS), fornisce backup automatizzati, alta disponibilità, manutenzione pianificata, scala di storage dinamica, scalabilità verticale e così via.

Esempio: business continuity

Il servizio OCI Database with PostgreSQL offre un Service Level Agreement (SLA) con tempi di attività del 99,99%, un Recovery Time Objective (RTO) inferiore a 2 minuti per i sistemi di database multi-nodo e un Recovery Point Objective (RPO) di 0 senza perdita di dati. Per i sistemi di database a nodo singolo in aree AD (Single Availability Domains), il servizio offre un SLA con tempi di attività del 99,9%, un RTO inferiore a 20 minuti e un RPO pari a 0.

OCI Database con PostgreSQL sfrutta OCI Block Volumes per memorizzare i dati degli utenti. Quindi si applicano le stesse garanzie di durata, sicurezza e prestazioni. Per ulteriori informazioni, consulta la panoramica di OCI Database con PostgreSQL e Primi principi: ottimizzazione di PostgreSQL per il cloud.

immettere qui la descrizione dell'immagine

Questa esercitazione è incentrata sulla migrazione da un database PostgreSQL on-premise a un database OCI con PostgreSQL utilizzando OCI GoldenGate con tempi di inattività minimi.

Dettagli ambiente:

  Origine in locale OCI di destinazione
Nome del database product_inventory database di destinazione
User ordermanente admin
Schema data_analyze data_analyze
Versione del database 15,12 15,6

Obiettivi

  1. Crea il database OCI con il sistema di database PostgreSQL.

  2. Eseguire il provisioning della distribuzione GoldenGate OCI.

  3. Crea database in locale e connessione al database OCI in fase di distribuzione e assegna connessioni.

  4. Preparare il database server e il database di origine.

  5. Crea estrazione caricamento iniziale.

  6. Eseguire il backup dei metadati del database di origine utilizzando la utility pg_dump.

  7. Importare i metadati nel database OCI con PostgreSQL.

  8. Crea Replicat caricamento iniziale utilizzando il file trail.

  9. Consente di creare l'estrazione CDC (Changed Data Capture) in linea e di avviare il numero di sequenza log (LSN) per l'acquisizione.

  10. Crea Replicat online fornendo il file trail di Estrazione CDC.

Task 1: Provisioning del database OCI con il sistema di database PostgreSQL

Questo task spiega come creare un sistema di database e prima di eseguire il provisioning sono necessari i criteri riportati di seguito. Per ulteriori informazioni, vedere Gestione di un sistema di database.

  1. Aggiungere i criteri Oracle Cloud Infrastructure Identity and Access Management (IAM) seguenti.

    Allow group <postgresql-admin-group> to read compartments in tenancy
    Allow group <postgresql-admin-group> to manage postgres-db-systems in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to manage postgres-backups in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to read postgres-work-requests in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to manage postgres-configuration in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to manage virtual-network-family in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to read secret-family in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to read vaults in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to read metrics in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to use tag-namespaces in tenancy
    
  2. Creare o selezionare un vault per la password dell'amministratore del database. Per ulteriori informazioni, vedere Gestione dei vault.

  3. Creare una chiave per la password del database. Per ulteriori informazioni, vedere Gestione delle chiavi.

  4. Creare un segreto per la password del database. Per ulteriori informazioni, vedere Gestione dei segreti del vault.

  5. Eseguire il login a OCI Console, andare a Database, PostgreSQL, Sistemi DB, Creare un nuovo sistema di database e fare clic su Successivo.

    immettere qui la descrizione dell'immagine

    immettere qui la descrizione dell'immagine

  6. Selezionare Hardware configuration.

    immettere qui la descrizione dell'immagine

  7. Selezionare Rete cloud virtuale e Subnet e immettere Credenziali di amministratore del sistema di database. In questo esempio, Username sarà admin.

    immettere qui la descrizione dell'immagine

    Una volta completata la creazione, il sistema di database mostra lo stato Attivo.

    immettere qui la descrizione dell'immagine

  8. Eseguire il comando seguente per verificare la connessione al database OCI con PostgreSQL dal nodo di calcolo.

    -bash-4.2$ psql "sslmode=verify-full sslrootcert=c.pub host=<OCI DB server ip address>  user=admin dbname=postgres"
    Password for user admin:
    psql (15.12, server 15.6)
    SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, compression: off)
    Type "help" for help.
    postgres=>
    

Task 2: creare una distribuzione GoldenGate OCI per la migrazione

  1. Andare a OCI Console, andare a Oracle Database, GoldenGate, Distribuzioni e fare clic su Crea distribuzione.

  2. Immettere le informazioni richieste specificate nelle immagini seguenti e selezionare PostgreSQL come Seleziona una tecnologia.

    immettere qui la descrizione dell'immagine

    immettere qui la descrizione dell'immagine

  3. In Configurare la distribuzione, utilizzare oggadmin come nome utente per eseguire il login alla console GoldenGate OCI come amministratore.

    immettere qui la descrizione dell'immagine

    immettere qui la descrizione dell'immagine

  4. Fare clic su Crea per avviare la creazione e la distribuzione. Una volta completato correttamente, verrà visualizzato lo stato Attivo.

    immettere qui la descrizione dell'immagine

Task 3: Crea connessione al database in locale, Connessioni al database OCI alla distribuzione e Assegna connessioni

OCI GoldenGate richiede sia la connessione al database di origine che quella di destinazione e assegna entrambe le connessioni alla distribuzione.

  1. Crea la connessione al database di provenienza.

    1. Fare clic sul nome della distribuzione (PG_Mig_deployment), selezionare Connessioni e fare clic su Crea connessione. Immettere le informazioni richieste come illustrato nelle immagini riportate di seguito.

      immettere qui la descrizione dell'immagine

    2. Selezionare Tipo come PostgreSQL Server, Protocollo di sicurezza come Semplice e fare clic su Crea.

      immettere qui la descrizione dell'immagine

  2. Crea la connessione al database di origine.

    1. Fare clic sul nome della distribuzione, selezionare Connessioni e fare clic su Crea connessione. Immettere le informazioni richieste come illustrato nelle immagini riportate di seguito.

      immettere qui la descrizione dell'immagine

    2. Selezionare Tipo come OCI PostgreSQL.

      immettere qui la descrizione dell'immagine

    3. Selezionare Security Protocol come TLS e SSL Mode come Require.

      immettere qui la descrizione dell'immagine

  3. Assegnare le connessioni al database alla distribuzione.

    1. Andare a Distribuzioni, fare clic sul nome della distribuzione (PG_Mig_deployment), selezionare Assegna connessioni e fare clic su Assegna connessione.

      immettere qui la descrizione dell'immagine

    2. Immettere le informazioni richieste come illustrato nelle immagini riportate di seguito.

      immettere qui la descrizione dell'immagine

      Verrà visualizzato lo stato Attivo al termine dell'assegnazione della connessione.

      immettere qui la descrizione dell'immagine

Task 4: Prepara database server e database di origine

  1. Installare il pacchetto postgresql15-contrib.

    OCI GoldenGate richiede il package postgresql14-contrib sul database server di origine per eseguire l'estrazione dal database del server PostgreSQL. Il pacchetto può essere installato utilizzando il comando sudo yum install postgresql15-contrib (la versione del database di origine è 15).

    Nota: si consiglia che la versione delle librerie client corrisponda alla versione del database PostgreSQL. Le versioni client inferiori a 10 non sono supportate.

  2. Preparare la creazione degli utenti del database sul database di origine e sui privilegi richiesti.

    product_inventory=# create user  ggreplication with password 'abc1234';
    ERROR:  role "ggreplication" already exists
    product_inventory=#
    product_inventory=#  select current_database();
     current_database
    -------------------
     product_inventory
    (1 row)
    
    product_inventory=# GRANT CONNECT ON DATABASE product_inventory TO ggreplication;
    GRANT
    product_inventory=# ALTER USER ggreplication WITH 	REPLICATION;
    ALTER ROLE
    product_inventory=# ALTER USER ggreplication WITH SUPERUSER;
    ALTER ROLE
    product_inventory=# GRANT USAGE ON SCHEMA ordermanager TO ggreplication;
    GRANT
    product_inventory=# GRANT USAGE ON SCHEMA data_analyze TO ggreplication;
    GRANT
    product_inventory=# GRANT SELECT ON ALL TABLES IN SCHEMA ordermanager TO ggreplication;
    GRANT
    product_inventory=# GRANT SELECT ON ALL TABLES IN SCHEMA data_analyze TO ggreplication;
    GRANT
    product_inventory=# GRANT CREATE ON DATABASE product_inventory  TO ggreplication;
    GRANT
    product_inventory=# GRANT CREATE, USAGE ON SCHEMA ordermanager TO ggreplication;
    GRANT
    product_inventory=# GRANT CREATE, USAGE ON SCHEMA data_analyze TO ggreplication;
    GRANT
    product_inventory=# GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA ordermanager TO ggreplication;
    GRANT
    product_inventory=# GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA data_analyze TO ggreplication;
    GRANT
    product_inventory=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA ordermanager TO ggreplication;
    GRANT
    product_inventory=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA data_analyze TO ggreplication;
    GRANT
    product_inventory=#
    

    Per ulteriori informazioni sullo scopo specifico di ciascun privilegio, vedere Preparare gli utenti e i privilegi del database per PostgreSQL.

  3. Di seguito sono riportati i parametri nel file di configurazione del database PostgreSQL. La posizione del file di configurazione è $PGDATA/postgresql.conf.

    wal_level = logical   **# set to logical for Capture**
    
    max_replication_slots = 1 **# max number of replication and one slot for Extract/Client**
    
    max_wal_senders = 1 **# one sender per max repl slot**
    
    track_commit_timestamp = on **# optional, correlates tx commit time**  with begin tx log record (useful for  # timestamp-	based positioning)
    

    Nota:

    • Dopo aver apportato una delle modifiche precedenti, riavviare il database.
    • La replica OCI GoldenGate supporta i tipi di dati PostgreSQL e la limitazione dei tipi di dati supportati, degli oggetti e delle operazioni supportati può essere verificata dalla documentazione. Per ulteriori informazioni, vedere Preparazione dei database.

Task 5: Crea estrazione caricamento iniziale

È necessario creare l'estrazione del caricamento iniziale e fornire il LSN nella sezione del report Estrazione GoldenGate OCI.

  1. Andare a OCI Console, andare a Database, GoldenGate, Distribuzioni e fare clic sul nome della distribuzione creato nel task 2.

    immettere qui la descrizione dell'immagine

  2. Fare clic su Avvia console e immettere le credenziali di login.

    immettere qui la descrizione dell'immagine

  3. Andare a Connessioni DB e visualizzare l'origine e il database OCI assegnati con connessioni al database PostgreSQL e verificare il controllo della connettività.

    immettere qui la descrizione dell'immagine

    La connessione riuscita è utile per avviare il caricamento iniziale in questa fase.

  4. Andare alla console GoldenGate OCI, andare a Estrai e fare clic su +.

    immettere qui la descrizione dell'immagine

    immettere qui la descrizione dell'immagine

    immettere qui la descrizione dell'immagine

    Una volta arrestata l'estrazione del caricamento iniziale, verificare i file del report GoldenGate OCI e prendere nota dei dettagli di LSN e tenerlo a portata di mano da utilizzare nel task 9.

    immettere qui la descrizione dell'immagine

Task 6: Backup dei metadati del database di origine mediante il comando pg_dump

Il comando pg_dump viene utilizzato per eseguire il dump solo dei metadati product_inventory del database di origine.

pg_dump -h localhost  -U ggreplication -d product_inventory -F c -v -s --file=/tmp/exp_source_db.dump

Task 7: Importa metadati nel database OCI con PostgreSQL

Utilizzare il file binario pg_restore per eseguire l'importazione nel database OCI di destinazione con PostgreSQL. Il nome del database OCI è targetdb.

Eseguire il comando di ripristino dal nodo OCI Compute in cui è stato eseguito correttamente il comando di connessione nel task 1.8.

pg_restore -h <OCI IP address>  -U admin -d targetdb  -v exp_source_db.dump
postgres=> \c targetdb
psql (15.12, server 15.6)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, compression: off)
You are now connected to database "targetdb" as user "admin".
targetdb=> \dn
         List of schemas
     Name     |       Owner
--------------+-------------------
 data_analyze | admin
 ordermanager | admin
 public       | pg_database_owner
(3 rows)

Nota: utilizzare la query select table_name,table_schema from information_schema.tables where table_type='BASE TABLE' and table_schema in ('data_analyze','ordermanager') order by table_schema,table_name; per verificare i nomi delle tabelle dopo l'importazione dei metadati nella destinazione.

Task 8: Crea replica caricamento iniziale utilizzando il file trail

  1. Andare alla console GoldenGate OCI, andare a Replicat e fare clic su + per creare Replicat.

    immettere qui la descrizione dell'immagine

    immettere qui la descrizione dell'immagine

    immettere qui la descrizione dell'immagine

  2. Fare clic su Crea ed esegui per avviare il caricamento iniziale Replica. Una volta completato, verificare i conteggi delle righe della tabella.

  3. Andare a Report e verificare il caricamento iniziale dei report Replica. Verifica del numero di righe di tabella in entrambi i database.

    immettere qui la descrizione dell'immagine

    immettere qui la descrizione dell'immagine

Task 9: Creazione modifica estrazione CDC in LSN iniziale per acquisizione

CDC Extract è un estratto online utilizzato per acquisire le modifiche in corso sul database esistente e CDC Extract inizia l'acquisizione dal numero LSN raccolto.

  1. Andare alla console GoldenGate OCI, andare a Estrazioni, fare clic sul segno + e immettere le informazioni necessarie come mostrato nelle immagini riportate di seguito.

    immettere qui la descrizione dell'immagine

    immettere qui la descrizione dell'immagine

    immettere qui la descrizione dell'immagine

    immettere qui la descrizione dell'immagine

  2. Dopo aver registrato e creato CDC, fare clic su Avvia con opzioni per indicare la lettura da un LSN specifico raccolto nel task 5.

    immettere qui la descrizione dell'immagine

    immettere qui la descrizione dell'immagine

    Possiamo vedere zero secondi di ritardo su CDC Extract dopo un certo tempo.

    immettere qui la descrizione dell'immagine

Task 10: Crea replica in linea con file trail estrazione CDC

  1. Andare alla console GoldenGate OCI, andare a Replicat, fare clic sul segno + e immettere le informazioni necessarie come mostrato nelle immagini riportate di seguito.

    immettere qui la descrizione dell'immagine

    immettere qui la descrizione dell'immagine

  2. Fare clic su Crea ed esegui dopo aver modificato il comando MAP.

    immettere qui la descrizione dell'immagine

    Possiamo vedere zero secondi di ritardo su Replicat Online dopo un po 'di tempo.

    immettere qui la descrizione dell'immagine

Verifica

Eseguire le query riportate di seguito per inserire nella tabella di origine data_analyze.table3 repliche nella tabella data_analyze.table3 del database di destinazione.

immettere qui la descrizione dell'immagine

Conteggio e dati della tabella di verifica lato destinazione.

immettere qui la descrizione dell'immagine

Conferma

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.