Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Migration einer auf MongoDB Atlas oder On Premise ausgeführten MongoDB-Datenbank zu Oracle Autonomous JSON Database
Einführung
MongoDB ist eine der beliebten Open-Source-Datenbanken, mit denen Daten in flexiblen, JSON-ähnlichen Dokumenten erstellt und gespeichert werden. Das bedeutet, dass Felder von Dokument zu Dokument variieren können und die Datenstruktur im Laufe der Zeit geändert werden kann.
Oracle, eine der weltweit führenden relationalen Multi-Modell-Datenbanken mit dem Namen Converged Database, verfügt über eine gute Fähigkeit, JSON zu verarbeiten. Oracle hat die Unterstützung für JSON von v12c eingeführt, gespeicherte JSON-Daten als varchar2 oder Large Object (LOB) (Character Large Object (CLOB)/Binary Large Object (BLOB)).
Herausforderungen mit MongoDB:
-
MongoDB ist schnell gestartet, aber es fehlen wichtige Features für Unternehmens-Deployments.
-
Begrenzte Transaktionsunterstützung führt zu Herausforderungen bei der Datenkonsistenz.
-
Schwierige und ineffiziente analytische Abfragen (und keine parallele Abfrage).
-
Unreifen Sicherheitsfunktionen.
-
American National Standards Institute Structured Query Language-(ANSI SQL-)Funktionalität.
Vorteile der Verwendung von JSON-Datentypen in Oracle:
-
Von Oracle Version 21c, JSON im nativen Format gespeichert, so dass Benutzer JSON-Dokumente mit Standard-SQL abfragen können, die es ermöglichte, Anwendungen mit der Flexibilität eines schemalosen Designmodells mit der ganzen Leistungsfähigkeit von Oracle Database zu erstellen, wie Replikation, Partitionierung und Indexierung mit allen Funktionen, zu denen Oracle Database fähig ist.
-
JSON kann über SQL-Abfrage bearbeitet werden.
-
Wird als OSON gespeichert (eine optimierte native binäre Darstellung von JSON).
Hinweis: Stellen Sie sicher, dass die Konnektivität zwischen dem Deployment, der Quell- und der Zieldatenbank von Oracle Cloud Infrastructure (OCI) GoldenGate Big Data hergestellt ist.
Ziele
- Richten Sie MongoDB und Oracle Autonomous JSON Database mit dem OCI GoldenGate Big Data-Deployment ein.
Voraussetzungen
-
Stellen Sie die folgenden Ressourcen bereit:
-
OCI-Umgebung wie (Compartment, virtuelles Cloud-Netzwerk (VCN), Subnetz usw.
-
Oracle Autonomous JSON Database.
-
OCI Compute-VM für Replikatset MongoDB.
-
OCI GoldenGate Big Data-Deployment.
-
Aufgabe 1: Installieren Sie MongoDB Binary, und starten Sie die MongoDB-Services
-
Erstellen Sie drei OCI Compute-Instanzen für das Replikationssetup, und hängen Sie das Block-Volume für das Datenverzeichnis an.
-
Aktualisieren Sie die
yum
-Repositorys, um die Binärdatei MongoDB mit dem folgenden Befehl herunterzuladen.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
-
Erstellen Sie das Datenverzeichnis, und erteilen Sie die erforderliche Berechtigung mit dem folgenden Befehl.
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
Hinweis: Schlüsseldatei ist für die sichere Authentifizierung erforderlich. Zu Testzwecken kann die Schlüsseldatei mit dem Befehl
open-ssl
generiert werden. -
Erstellen Sie die Konfigurationsdatei mit dem folgenden Befehl.
cat /etc/mongod.conf
-
Deaktivieren Sie die
selinux
, und starten Sie diemongod
-Services mit den folgenden Befehlen.setenforce 0 getenforce systemctl start mongod systemctl status mongod
-
Führen Sie dieselben Vorgänge auf den verbleibenden zwei Knoten aus, die als sekundärer Knoten fungieren.
Aufgabe 2: MongoDB-Replikatset erstellen
-
Stellen Sie eine Verbindung zum ersten Knoten her, und stellen Sie eine Verbindung zur Admin-Datenbank her.
-
Führen Sie die folgenden Befehle aus, um die Replikation zu starten und den ersten Admin-Benutzer zu erstellen. Dieser Replikationsbenutzer wird für Replikationskonfiguration und -verwaltung verwendet.
mongosh use admin
rs.initiate() db.createUser({ ... user: "admin", ... pwd: "password", ... roles: [ ... { role: "root", db: "admin" } ... ] ... })
db.auth("admin","password") rs.conf()
-
Fügen Sie die restlichen zwei Knoten mit den folgenden Befehlen hinzu. Diese werden als sekundäre Knoten hinzugefügt.
rs.add("10.0.1.163;27017")
rs.add("10.0.1.51:27017")
-
Prüfen Sie Konfiguration und Status des Replikatsets mit den folgenden Befehlen.
db.auth("admin","password") rs.conf()
rs.status()
rs.printReplicationInfo()
Aufgabe 3: Daten in das Replikatset MongoDB laden
-
Stellen Sie den Dump mit dem Befehl
mongorestore
in das Replikatset MongoDB zurück.mongorestore --username admin --password password dump/
Hinweis: Der obige Dump wurde aus einem anderen MongoDB-Replikatset mit dem Befehl
mongodump
für alle Datenbanken abgerufen, die unter diesem Replikatset ausgeführt werden. -
Führen Sie den folgenden Befehl aus, um zu prüfen, ob alle Datenbanken und die zugehörigen Collections in das Replikatset MongoDB zurückgeschrieben wurden.
mongosh use admin db.auth("admin","password") show dbs
Aufgabe 4: Oracle Autonomous JSON Database in OCI konfigurieren
-
Melden Sie sich bei der OCI-Konsole an, navigieren Sie zu Oracle Database, Autonomous Database, und geben Sie die folgenden Informationen ein, wie in den Images zum Erstellen einer autonomen Datenbank gezeigt.
Hinweis: Für die Kompatibilität mit MongoDB muss der Netzwerkzugriff entweder auf "Sicherer Zugriff nur von zulässigen IPs und VCNs" oder auf "Nur privater Endpunktzugriff" gesetzt werden.
-
Klicken Sie auf Toolkonfiguration bearbeiten, aktivieren Sie die MongoDB-API, und kopieren Sie die URL.
Hinweis: Sie müssen den Benutzernamen und das Kennwort in der obigen Verbindungszeichenfolge ändern.
Aufgabe 5: Database Client Machine für den Zugriff auf Oracle Autonomous JSON Database erstellen und erforderliche MongoDB-Tools installieren
-
Laden Sie die Wallet-Datei herunter, und konfigurieren Sie die Konnektivität für Oracle Autonomous JSON Database mit den folgenden Befehlen.
cat tnsnames.Oracle
cat sqlnet.Ora
-
Laden Sie die MongoDB-Tools zur Konnektivität mit den folgenden Befehlen herunter.
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
-
Legen Sie Pfad und URI (Oracle Autonomous Transaction Processing-(ATP-)Endpunkt) mit den folgenden Befehlen als Umgebungsvariable fest.
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
-
Prüfen Sie mit dem folgenden Befehl, ob Sie eine Verbindung zu Oracle Autonomous JSON Database herstellen können.
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
Aufgabe 6: Dump in OCI Object Storage-Bucket hochladen und in ATP importieren
-
Erstellen Sie einen Dump einer Collection mit dem Befehl
mongoexport
.mongoexport --host=mrep1 --port 27017 --username=admin --authicationDatabase=admin --collection=data --db=sample_weatherdata --out=wheather_data.Json
-
Klicken Sie auf Hochladen, um den Dump einer einzelnen Sammlung von Datenbanken hochzuladen, die mit dem Befehl
mongoexport
im Replikatset MongoDB erstellt wurde. -
Klicken Sie auf Objektdetails anzeigen, um Objektendpunktdetails abzurufen.
-
Führen Sie den Befehl
curl
aus, um die Daten aus diesem Objekt und den Befehlmongoimport
mit dem Endpunkt in ATP zu lesen.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
-
Prüfen Sie, ob die Erfassung in die Verfügbarkeitsdatenbank importiert wurde.
-
Prüfen Sie, ob die Anzahl der Dokumente mit der Quelle übereinstimmt.
Test erfolgreich. Jetzt ist es ratsam, alle Daten, die unter mehreren Datenbanken ausgeführt werden, in das Quellreplikat MongoDB zu verschieben, das auf Oracle Autonomous JSON Database ausgerichtet ist, und OCI-GoldenGate-Services für eine Migration nahezu ohne Ausfallzeiten bereitzustellen.
-
Bei der Datenverschiebung können Sie mit dem Befehl
mongodump
Daten als einmaliges Laden von der Quelle in die Zieldatenbank kopieren.export URI="mongodb://mrep1:27017 --username admin --authenticationDatabase admin" mongodump --uri=$URI
-
Kopieren Sie diesen Dump in das Zielsystem, von dem aus Sie den Befehl
mongorestore
ausführen können (wird bereits in Aufgabe 3 erläutert, um ihn in die Oracle Autonomous JSON Database-Zielinstanz zu laden).Hinweis: Erstellen Sie in Oracle Autonomous JSON Database denselben Schemanamen für die Datenbank-Collections, die Sie migrieren möchten.
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; /
Aufgabe 7: OCI bereitstellen GoldenGate
-
Gehen Sie zur OCI-Konsole, navigieren Sie zu Oracle Database, GoldenGate, Deployments, und klicken Sie auf Deployment erstellen.
Für MongoDB zu Oracle Autonomous JSON Database müssen Sie Technologie als Big Data und Deployment-Typ als Datenreplikation auswählen.
-
Erstellen Sie das Secret im Voraus über die OCI-Konsole für die Anmeldung und Verwaltung von Admin-Benutzern.
Aufgabe 8: Verbindung für MongoDB und Oracle Autonomous JSON Database erstellen
-
Gehen Sie zur OCI-Konsole, navigieren Sie zu Oracle Database, GoldenGate, Verbindungen, und klicken Sie auf Verbindung erstellen.
-
Geben Sie die folgenden Informationen ein, wie im Image dargestellt, um die Quelldatenbankverbindung zu erstellen.
-
Wiederholen Sie den 1. Schritt, und geben Sie die folgenden Informationen ein, wie im Bild dargestellt, um die Verbindung zur Zieldatenbank zu erstellen.
Aufgabe 9: Verbindung zum OCI-Deployment GoldenGate zuweisen und testen
-
Gehen Sie zur OCI-Konsole, navigieren Sie zu Oracle Database, GoldenGate, Verbindungen, und klicken Sie auf die Verbindung, die in Aufgabe 8 erstellt wurde.
-
Klicken Sie auf Zugewiesene Deployments und Deployment zuweisen.
-
Wählen Sie das Deployment aus, und klicken Sie auf Deployment zuweisen.
-
Klicken Sie auf die drei Punkte und Verbindung testen, um sicherzustellen, dass sie erfolgreich ist.
Aufgabe 10: Extract- und Replicat-Prozesse erstellen
-
Gehen Sie zur OCI-Konsole, navigieren Sie zu Oracle Database, GoldenGate, Deployments, und klicken Sie auf das in Aufgabe 7 erstellte Deployment.
Klicken Sie auf Konsole starten, um die OCI-Konfigurationskonsole GoldenGate zu öffnen.
-
Geben Sie den Benutzernamen und das Kennwort ein, die beim Deployment erstellt wurden.
Nachdem Sie auf der Konsolenseite angemeldet sind, werden alle erforderlichen Optionen für die Konfiguration Extrahieren und Replikat angezeigt. Sie können Extract- und Replicat-Services erstellen, wie in den späteren Schritten dargestellt.
-
Exportprozess konfigurieren
Wählen Sie Verbindungsalias aus, der für die Quelldatenbank MongoDB erstellt wurde.
In der Parameterdatei ist
sample_airbnb
eine Datenbank in MongoDB, und*
stellt alle Collections in dieser Datenbank dar. -
Replicat-Prozess konfigurieren
-
Wählen Sie Classic Replicat als Replikattyp aus.
-
Geben Sie die folgenden erforderlichen Informationen ein.
Sie müssen denselben Traildateinamen auswählen, der bei der Extraktionsprozesserstellung benannt wurde. Wählen Sie Ziel als Oracle Autonomous JSON Database aus, und geben Sie den Verbindungsalias ein, der in Aufgabe 8 erstellt wurde.
Der Replicat-Prozess repliziert alle Transaktionen von der Datenbank
sample_airbnb
in MongoDB insample_airbnb
-Schemas in Oracle Autonomous JSON Database.
Hinweis: Sie müssen den Quell- und Zieldatenbanknamen sowie den Schemanamen in der Konfiguration ändern.
-
-
Sobald Sie mit der Extraktions- und Replicat-Prozesskonfiguration fertig sind, starten Sie den Prozess entsprechend.
Hinweis: Oracle Autonomous JSON Database muss mit einem privaten Endpunkt konfiguriert werden. Wenn das Zertifikat nicht verwendet wird, können Sie die Authentifizierung wie ohne gegenseitige TLS (mTLS) ändern.
Wenn die korrekte Zertifizierung nicht verfügbar ist, wird möglicherweise der folgende Fehler in der Replikationslogdatei angezeigt:
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Aufgabe 11: Extrahieren und Replizieren von Prozessen starten und validieren
Klicken Sie auf Administrativer Service, um den Status der Prozesse sowie die zugehörigen Berichte und Logdateien auf Probleme zu prüfen.
-
Exportprozessstatus:
-
Replicat-Prozessstatus:
Aufgabe 12: Datensynchronisierung testen
-
Prüfen Sie in Quelle und Ziel die Dokumentanzahl in den Collection-Details, bevor Sie einige Daten mit den folgenden Befehlen einfügen.
-
Quelldatenbank:
show dbs use sample_airbnb show collections db.emp.countDocuments()
-
Zieldatenbank:
show dbs use Sample_airbnb show collections db.emp.countDocuments()
-
-
Prüfen Sie die Daten in der Quell- und Zieldatenbank mit den folgenden Befehlen.
-
Quelldatenbank:
db.emp.find({"name":"joe"}) db.emp.find({"name":"John"})
-
Zieldatenbank:
db.emp.find({"name":"joe"}) db.emp.find({"name":"John"})
-
-
Fügen Sie Daten in die Quelle ein, und prüfen Sie mit den folgenden Befehlen, ob sie auf das Ziel repliziert wurden.
-
Quelldatenbank:
dm.emp.insertOne( { "name":"John","job":"Data Analyst","Salary":7000}) db.emp.countDocuments() db.emp.find({"name":"John"})
-
Zieldatenbank:
show DBs show collections db.emp.find({"name":"John"})
-
Aufgabe 13: Verbindung zu MongoDB Atlas herstellen
Die Verbindung zu MongoDB Atlas unterscheidet sich von der Verbindung zu einer On-Premise-Datenbank MongoDB.
-
Die folgende Standardverbindungszeichenfolge von MongoDB Atlas wird nicht unterstützt.
mongodb+srv://<db_username>:<db_password>@cluster0.xxxxx.mongodb.net/
-
Für eine erfolgreiche Verbindung muss die folgende Verbindungszeichenfolge verwendet werden.
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
Hinweis: Stellen Sie sicher, dass Sie ein NAT-Gateway erstellen und mit einem privaten Subnetz anhängen, das vom OCI-Deployment GoldenGate verwendet wird, sowie wenn die Verbindung in einem öffentlichen Netzwerk hergestellt werden muss.
Häufige Fehler aufgrund von Konnektivitätsproblemen
Das Konnektivitätsproblem mit der Ziel-Oracle Autonomous JSON Database kann beim Starten des Replikationsprozesses zu verschiedenen Fehlern führen:
-
Fehler 1:
ERROR OGG-01091 Unable to open file "/u02/Deployment/var/lib/data/a1000000000" (error 2, No such file or directory).
-
Fehler 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
-
Fehler 3: Bei einer integrierten Replikation tritt möglicherweise der folgende Fehler auf:
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
-
Fehler 4: Verbindung in MongoDB Atlas mit Standardverbindungszeichenfolge wird mit OCI GoldenGate Big Data-Deployment nicht unterstützt. Sie erhalten einen Fehler, wie in der folgenden Abbildung gezeigt.
Verwandte Links
Danksagungen
- Autor - Ashish Srivastava (Principal Cloud Architect, Oracle North America Cloud Services - NACIE)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Migrate a MongoDB Database Running on MongoDB Atlas or On-Premises to Oracle Autonomous JSON Database
G26106-01
February 2025
Copyright ©2025, Oracle and/or its affiliates.