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.
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:
- Nome utente della console OCI GoldenGate:
oggadmin
. - Versione GoldenGate OCI:
23ai
. - Database OCI con nome amministratore PostgreSQL:
admin
.
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
-
Crea il database OCI con il sistema di database PostgreSQL.
-
Eseguire il provisioning della distribuzione GoldenGate OCI.
-
Crea database in locale e connessione al database OCI in fase di distribuzione e assegna connessioni.
-
Preparare il database server e il database di origine.
-
Crea estrazione caricamento iniziale.
-
Eseguire il backup dei metadati del database di origine utilizzando la utility
pg_dump
. -
Importare i metadati nel database OCI con PostgreSQL.
-
Crea Replicat caricamento iniziale utilizzando il file trail.
-
Consente di creare l'estrazione CDC (Changed Data Capture) in linea e di avviare il numero di sequenza log (LSN) per l'acquisizione.
-
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.
-
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
-
Creare o selezionare un vault per la password dell'amministratore del database. Per ulteriori informazioni, vedere Gestione dei vault.
-
Creare una chiave per la password del database. Per ulteriori informazioni, vedere Gestione delle chiavi.
-
Creare un segreto per la password del database. Per ulteriori informazioni, vedere Gestione dei segreti del vault.
-
Eseguire il login a OCI Console, andare a Database, PostgreSQL, Sistemi DB, Creare un nuovo sistema di database e fare clic su Successivo.
-
Selezionare Hardware configuration.
-
Selezionare Rete cloud virtuale e Subnet e immettere Credenziali di amministratore del sistema di database. In questo esempio, Username sarà admin.
Una volta completata la creazione, il sistema di database mostra lo stato Attivo.
-
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
-
Andare a OCI Console, andare a Oracle Database, GoldenGate, Distribuzioni e fare clic su Crea distribuzione.
-
Immettere le informazioni richieste specificate nelle immagini seguenti e selezionare PostgreSQL come Seleziona una tecnologia.
-
In Configurare la distribuzione, utilizzare
oggadmin
come nome utente per eseguire il login alla console GoldenGate OCI come amministratore. -
Fare clic su Crea per avviare la creazione e la distribuzione. Una volta completato correttamente, verrà visualizzato lo stato Attivo.
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.
-
Crea la connessione al database di provenienza.
-
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. -
Selezionare Tipo come PostgreSQL Server, Protocollo di sicurezza come Semplice e fare clic su Crea.
-
-
Crea la connessione al database di origine.
-
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.
-
Selezionare Tipo come OCI PostgreSQL.
-
Selezionare Security Protocol come TLS e SSL Mode come Require.
-
-
Assegnare le connessioni al database alla distribuzione.
-
Andare a Distribuzioni, fare clic sul nome della distribuzione (
PG_Mig_deployment
), selezionare Assegna connessioni e fare clic su Assegna connessione. -
Immettere le informazioni richieste come illustrato nelle immagini riportate di seguito.
Verrà visualizzato lo stato Attivo al termine dell'assegnazione della connessione.
-
Task 4: Prepara database server e database di origine
-
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 comandosudo 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.
-
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.
-
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.
-
Andare a OCI Console, andare a Database, GoldenGate, Distribuzioni e fare clic sul nome della distribuzione creato nel task 2.
-
Fare clic su Avvia console e immettere le credenziali di login.
-
Andare a Connessioni DB e visualizzare l'origine e il database OCI assegnati con connessioni al database PostgreSQL e verificare il controllo della connettività.
La connessione riuscita è utile per avviare il caricamento iniziale in questa fase.
-
Andare alla console GoldenGate OCI, andare a Estrai e fare clic su +.
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.
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
-
Andare alla console GoldenGate OCI, andare a Replicat e fare clic su + per creare Replicat.
-
Fare clic su Crea ed esegui per avviare il caricamento iniziale Replica. Una volta completato, verificare i conteggi delle righe della tabella.
-
Andare a Report e verificare il caricamento iniziale dei report Replica. Verifica del numero di righe di tabella in entrambi i database.
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.
-
Andare alla console GoldenGate OCI, andare a Estrazioni, fare clic sul segno + e immettere le informazioni necessarie come mostrato nelle immagini riportate di seguito.
-
Dopo aver registrato e creato CDC, fare clic su Avvia con opzioni per indicare la lettura da un LSN specifico raccolto nel task 5.
Possiamo vedere zero secondi di ritardo su CDC Extract dopo un certo tempo.
Task 10: Crea replica in linea con file trail estrazione CDC
-
Andare alla console GoldenGate OCI, andare a Replicat, fare clic sul segno + e immettere le informazioni necessarie come mostrato nelle immagini riportate di seguito.
-
Fare clic su Crea ed esegui dopo aver modificato il comando
MAP
.Possiamo vedere zero secondi di ritardo su Replicat Online dopo un po 'di tempo.
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.
Conteggio e dati della tabella di verifica lato destinazione.
Collegamenti correlati
Conferma
- Autore - Sivakrishna Burle (ingegnere cloud senior, Oracle North America Cloud Services - NACIE)
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.
Provision OCI Database with PostgreSQL and Migrate from On-Premises with Minimum Downtime using OCI GoldenGate
G39914-02
Copyright ©2025, Oracle and/or its affiliates.