Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Eseguire la migrazione di un database MongoDB in esecuzione su MongoDB Atlas o on-premise a Oracle Autonomous JSON Database
Introduzione
MongoDB è uno dei più diffusi database open source utilizzati per creare e memorizzare dati in documenti flessibili simili a JSON, il che significa che i campi possono variare da documento a documento e la struttura dei dati può essere modificata nel tempo.
Oracle, uno dei database relazionali multi-modello leader a livello mondiale denominato Converged Database, ha buone capacità di gestione JSON. Oracle ha introdotto il supporto per JSON da v12c, dati JSON memorizzati come varchar2 o Large Object (LOB) (Character Large Object (CLOB)/Binary Large Object (BLOB)).
Sfide con MongoDB:
-
MongoDB è una soluzione rapida, ma non dispone di funzioni chiave per le distribuzioni aziendali.
-
Il supporto limitato delle transazioni porta a sfide legate alla coerenza dei dati.
-
Query analitiche difficili e inefficienti (e nessuna query parallela).
-
Funzionalità di sicurezza immature.
-
Funzionalità ANSI SQL (Structured Query Language) dell'American National Standards Institute.
Vantaggio dell'utilizzo del tipo di dati JSON in Oracle:
-
Da Oracle versione 21c, JSON memorizzato in formato nativo, in modo che gli utenti possano eseguire query sui documenti JSON utilizzando SQL standard che ha consentito di creare applicazioni con la flessibilità di un modello di progettazione senza schema con tutta la potenza di Oracle Database come la replica, il partizionamento, l'indicizzazione con tutte le funzionalità di cui è in grado Oracle Database.
-
È possibile manipolare JSON tramite query SQL.
-
Memorizzato come OSON (una rappresentazione binaria nativa ottimizzata di JSON).
Nota: assicurarsi che venga stabilita la connettività tra la distribuzione dei Big Data, i database di origine e di destinazione di Oracle Cloud Infrastructure (OCI) GoldenGate.
Obiettivi
- Impostare MongoDB e Oracle Autonomous JSON Database utilizzando la distribuzione dei Big Data GoldenGate OCI.
Prerequisiti
-
Eseguire il provisioning delle seguenti risorse:
-
Ambiente OCI come (compartimento, rete cloud virtuale (VCN), subnet e così via).
-
Oracle Autonomous JSON Database.
-
VM di OCI Compute per il set di repliche MongoDB.
-
Distribuzione di Big Data GoldenGate OCI.
-
Task 1: installare il file binario MongoDB e avviare i servizi MongoDB
-
Crea tre istanze di OCI Compute per l'impostazione della replica e collega il volume a blocchi per la directory dei dati.
-
Aggiornare i repository
yum
per scaricare il file binario MongoDB utilizzando il comando seguente.vi /etc/yum.repos.d/mongodb-enterprise-8.0.repo [mongodb-enterprise-8.0] name=MongoDB Enterprise Repository baseurl=https://repo.mongodb.com/yum/redhat/8/mongodb-enterprise/8.0/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://pgp.mongodb.com/server-8.0.asc sudo yum install -y mongodb-enterprise
-
Creare una directory dati e concedere l'autorizzazione richiesta utilizzando il comando seguente.
cd /data ls chmod 755 mongo cd chmod 755 -R /data/mongo chown mongod:mongod -R /data/mongo chmod 400 /etc/mongod.Keyfile chown mongod:mongod -R /etc/mongod.Keyfile
Nota: per l'autenticazione sicura è necessario il file chiave. A scopo di test, il file chiave può essere generato utilizzando il comando
open-ssl
. -
Creare il file di configurazione utilizzando il comando seguente.
cat /etc/mongod.conf
-
Disabilitare
selinux
e avviare i servizimongod
utilizzando i comandi seguenti.setenforce 0 getenforce systemctl start mongod systemctl status mongod
-
Eseguire le stesse operazioni sui due nodi rimanenti che fungeranno da nodo secondario.
Task 2: creare un set di repliche MongoDB
-
Connettersi al primo nodo e al database di amministrazione.
-
Eseguire i comandi riportati di seguito per avviare la replica e creare il primo utente amministratore. Questo utente di replica verrà utilizzato per la configurazione e la gestione della replica.
mongosh use admin
rs.initiate() db.createUser({ ... user: "admin", ... pwd: "password", ... roles: [ ... { role: "root", db: "admin" } ... ] ... })
db.auth("admin","password") rs.conf()
-
Aggiungere i due nodi rimanenti utilizzando i comandi seguenti. Questi verranno aggiunti come nodi secondari.
rs.add("10.0.1.163;27017")
rs.add("10.0.1.51:27017")
-
Controllare la configurazione e lo stato del set di repliche utilizzando i comandi seguenti.
db.auth("admin","password") rs.conf()
rs.status()
rs.printReplicationInfo()
Task 3: caricare i dati nel set di repliche MongoDB
-
Ripristinare il dump nel set di repliche MongoDB utilizzando il comando
mongorestore
.mongorestore --username admin --password password dump/
Nota: il dump precedente è stato ottenuto da un altro set di repliche MongoDB che utilizza il comando
mongodump
per tutti i database in esecuzione nel set di repliche. -
Eseguire il comando seguente per verificare se tutti i database e le relative raccolte sono stati ripristinati nel set di repliche MongoDB.
mongosh use admin db.auth("admin","password") show dbs
Task 4: configurare Oracle Autonomous JSON Database in OCI
-
Eseguire il login a OCI Console, passare a Oracle Database, Autonomous Database e immettere le informazioni riportate di seguito, come mostrato nelle immagini, per creare un database autonomo.
Nota: per la compatibilità MongoDB, è necessario impostare l'accesso di rete per proteggere l'accesso solo dagli IP e dalle VCN consentiti o solo dall'accesso agli endpoint privati.
-
Fare clic su Modifica configurazione strumento, abilitare MongoDB API e copiare l'URL.
Nota: è necessario modificare il nome utente e la password nella stringa di connessione sopra riportata.
Task 5: creare un computer client del database per accedere a Oracle Autonomous JSON Database e installare gli strumenti MongoDB necessari
-
Scaricare il file wallet e configurare la connettività per Oracle Autonomous JSON Database utilizzando i comandi riportati di seguito.
cat tnsnames.Oracle
cat sqlnet.Ora
-
Scaricare gli strumenti MongoDB per la connettività utilizzando i comandi seguenti.
wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel70-x86_64-100.5.2.tgz
tar -xvf mongodb-database-toosl-rhel70-x86_64-100.5.2.tgz
wget https://downloads.mongodb.com/compass/mongosh-1.3.1-linux-x64.tgz
tar -xvf mongosh-1.3.1-linux-x64.tgz
-
Impostare Percorso e URI (endpoint ATP (Oracle Autonomous Transaction Processing) come variabile di ambiente utilizzando i comandi riportati di seguito.
cd export PATH=/home/oracle/mongosh-1.3.1-linux-x64/bin/:$PATH export PATH=$PATH:/home/oracle/mongodb-database-tools-rhel70-x86_64-100.5.2/bin echo $path
-
Controllare se è possibile connettersi a Oracle Autonomous JSON Database utilizzando il comando seguente.
export URI='mongodb://admin:xxxx@xxxxxx-ADBJ.adb.us-ashburn-1.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true' mongosh $URI
Task 6: Carica dump nel bucket di storage degli oggetti OCI e importa in ATP
-
Eseguire il dump di una raccolta utilizzando il comando
mongoexport
.mongoexport --host=mrep1 --port 27017 --username=admin --authicationDatabase=admin --collection=data --db=sample_weatherdata --out=wheather_data.Json
-
Fare clic su Carica per caricare il dump di una singola raccolta di database utilizzata con il comando
mongoexport
sul set di repliche MongoDB. -
Fare clic su Visualizza dettagli oggetto per ottenere i dettagli dell'endpoint dell'oggetto.
-
Eseguire il comando
curl
per leggere i dati da tale oggetto e il comandomongoimport
su ATP utilizzando l'endpoint.curl -X GET https://objectstorage.us-ashburn-1.oraclecloud.com/p/ujXv8Pmhxt9EyLlA9ogm_X524pDRGEymJwbDVyUExAACra1VpAql32U0XaRnaxLt/n/orasenatdoracledigital01/b/jsonbucket/o/wheather_data.json | mongoimport --collection data --uri $URI
-
Controllare se la raccolta è stata importata nel database ATP.
-
Verifica incrociata se il numero di documenti è uguale all'origine.
Test completato. Ora è possibile spostare tutti i dati in esecuzione in più database nel set di repliche MongoDB di origine in Oracle Autonomous JSON Database di destinazione e distribuire i servizi GoldenGate OCI per una migrazione dei tempi di inattività pressoché nulla.
-
Per lo spostamento dei dati, è possibile utilizzare il comando
mongodump
per copiare i dati dal database di origine al database di destinazione come caricamento occasionale.export URI="mongodb://mrep1:27017 --username admin --authenticationDatabase admin" mongodump --uri=$URI
-
Copiare questo dump nel sistema di destinazione da cui è possibile eseguire il comando
mongorestore
(già spiegato nel task 3 per il caricamento nell'Oracle Autonomous JSON Database di destinazione).Nota: assicurarsi di creare lo stesso nome di schema in Oracle Autonomous JSON Database per le raccolte di database di cui si desidera eseguire la migrazione.
create user sample_airbnb identified by <password>; grant connect, resource to sample_airbnb; grant unlimited tablespace to sample_airbnb; BEGIN ORDS_ADMIN.ENABLE_SCHEMA(p_schema => 'SAMPLE_AIRBNB'); commit; END; /
Task 7: Distribuisci OCI GoldenGate
-
Andare alla console OCI, andare a Oracle Database, GoldenGate, Distribuzioni e fare clic su Crea distribuzione.
Per MongoDB in Oracle Autonomous JSON Database, è necessario selezionare Tecnologia come Big Data e Tipo di distribuzione come Replica dati.
-
Crea il segreto in anticipo da OCI Console per il login e la gestione degli utenti amministratori.
Task 8: creare una connessione per MongoDB e Oracle Autonomous JSON Database
-
Andare alla console OCI, andare a Oracle Database, GoldenGate, Connessioni e fare clic su Crea connessione.
-
Immettere le informazioni riportate di seguito come mostrato nell'immagine per creare la connessione al database di origine.
-
Ripetere il passo 1 e immettere le informazioni riportate di seguito, come mostrato nell'immagine, per creare la connessione al database di destinazione.
Task 9: assegnare ed eseguire il test della connessione alla distribuzione GoldenGate OCI
-
Andare alla console OCI, andare a Oracle Database, GoldenGate, Connessioni e fare clic sulla connessione creata nel task 8.
-
Fare clic su Distribuzioni assegnate e su Assegna distribuzione.
-
Selezionare la distribuzione e fare clic su Assegna distribuzione.
-
Fare clic sui tre punti e su Test della connessione per assicurarsi che sia riuscita.
Task 10: Crea processi di estrazione e replica
-
Andare alla console OCI, andare a Oracle Database, GoldenGate, Distribuzioni e fare clic sulla distribuzione creata nel task 7.
Fare clic su Avvia console per aprire la console di configurazione GoldenGate OCI.
-
Immettere il nome utente e la password creati durante la distribuzione.
Una volta eseguito il login alla pagina della console, è possibile visualizzare tutte le opzioni necessarie per la configurazione di Estrai e Replicat. È possibile creare servizi di estrazione e replica come illustrato nei passi successivi.
-
Configura il processo di estrazione.
Selezionare Alias connessione creato per il database MongoDB di origine.
In File dei parametri,
sample_airbnb
è un database in MongoDB e*
rappresenta tutte le raccolte in tale database. -
Configura il processo replicat.
-
Selezionare Replicat classico come Tipo di replica.
-
Immettere le informazioni richieste riportate di seguito.
È necessario selezionare lo stesso nome file trail, che è stato nominato nella creazione del processo di estrazione. Selezionare Destinazione come Oracle Autonomous JSON Database e immettere l'alias di connessione creato nel task 8.
Il processo Replicat replicherà tutte le transazioni dal database
sample_airbnb
in MongoDB agli schemisample_airbnb
in Oracle Autonomous JSON Database.
Nota: nella configurazione è necessario modificare rispettivamente il nome del database di origine e di destinazione e il nome dello schema.
-
-
Una volta completata la configurazione del processo di estrazione e replica, avviare il processo di conseguenza.
Nota: Oracle Autonomous JSON Database deve essere configurato con un endpoint privato. Se il certificato non viene utilizzato, è possibile modificare l'autenticazione senza TLS reciproco (mTLS).
Se la certificazione corretta non è disponibile, è possibile che venga visualizzato il seguente errore nel file di log della replica:
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Task 11: Avvia estrazione e replica processi e convalida
Fare clic su Servizio amministrativo per verificare la presenza di eventuali problemi sia nello stato dei processi che nei relativi report e file di log.
-
Stato processo estrazione:
-
Stato processo Replicat:
Task 12: Sincronizzazione dei dati di test
-
Nell'origine e nella destinazione, controllare il conteggio dei documenti nei dettagli della raccolta prima di inserire alcuni dati utilizzando i comandi seguenti.
-
Database di origine:
show dbs use sample_airbnb show collections db.emp.countDocuments()
-
Database di destinazione:
show dbs use Sample_airbnb show collections db.emp.countDocuments()
-
-
Controllare i dati nel database di origine e di destinazione utilizzando i comandi riportati di seguito.
-
Database di origine:
db.emp.find({"name":"joe"}) db.emp.find({"name":"John"})
-
Database di destinazione:
db.emp.find({"name":"joe"}) db.emp.find({"name":"John"})
-
-
Inserire i dati nell'origine e verificare se sono stati replicati nella destinazione utilizzando i comandi seguenti.
-
Database di origine:
dm.emp.insertOne( { "name":"John","job":"Data Analyst","Salary":7000}) db.emp.countDocuments() db.emp.find({"name":"John"})
-
Database di destinazione:
show DBs show collections db.emp.find({"name":"John"})
-
Task 13: connessione all'atlante MongoDB
La connessione a MongoDB Atlas è diversa dalla connessione a un database MongoDB in locale.
-
La seguente stringa di connessione predefinita dell'atlante MongoDB non è supportata.
mongodb+srv://<db_username>:<db_password>@cluster0.xxxxx.mongodb.net/
-
Per una connessione riuscita, è necessario utilizzare la stringa di connessione seguente.
mongodb://cluster0-shard-00-00.xxxx.mongodb.net:27017,cluster0-shard-00-01.xxxx.mongodb.net:27017,cluster0-shard-00-02.xxxx.mongodb.net:27017/?ssl=true&replicaSet=xxxx&authSource=admin&retryWrites=true&w=majority&appName=Cluster0
Nota: assicurarsi di creare un gateway NAT e collegarsi alla subnet privata utilizzata dalla distribuzione GoldenGate di OCI, nonché se la connessione deve essere stabilita in una rete pubblica.
Errori comuni dovuti a problemi di connettività
Il problema di connettività per la destinazione di Oracle Autonomous JSON Database può causare errori vari durante l'avvio del processo di replica:
-
Errore 1:
ERROR OGG-01091 Unable to open file "/u02/Deployment/var/lib/data/a1000000000" (error 2, No such file or directory).
-
Errore 2:
ERROR OGG-15051 Java or JNI exception: java.lang.NoClassDefFoundError: oracle/goldengate/datasource/UserExitMain. oracle.goldengate.util.GGException: Error detected handling transaction commit event. Exception in thread "main" oracle.goldengate.util.GGException: Error detected handling transaction commit event. at oracle.goldengate.datasource.UserExitDataSource.commitTransaction(UserExitDataSource.java:261 at oracle.goldengate.datasource.UserExitDataSource.commitTx(UserExitDataSource.java:2180) Caused by: java.net.SocketTimeoutException: Connect timed out
-
Errore 3: in caso di replica integrata, potrebbe verificarsi il seguente errore:
OGG-01091 Oracle GoldenGate Delivery, RSNOW.prm: Unable to open file "/u02/Deployment/etc/conf/ogg/<replicat name>001.properties" (error 2, No such file ordirectory). In that case, you need to set below parameter in property file of Replicate parameter. TARGETDB LIBFILE libggjava.so SET property=/u02/Deployment/etc/conf/ogg/<replicatname>.properties
-
Errore 4: la connessione nell'atlante MongoDB che utilizza la stringa di connessione predefinita non è supportata mediante la distribuzione dei Big Data GoldenGate OCI. Verrà visualizzato un errore come mostrato nella seguente immagine.
Collegamenti correlati
Conferme
- Autore - Ashish Srivastava (Principal Cloud Architect, Oracle North America Cloud Services - NACIE)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Migrate a MongoDB Database Running on MongoDB Atlas or On-Premises to Oracle Autonomous JSON Database
G26110-01
February 2025
Copyright ©2025, Oracle and/or its affiliates.