Hinweis:

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:

Vorteile der Verwendung von JSON-Datentypen in Oracle:

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

Voraussetzungen

Aufgabe 1: Installieren Sie MongoDB Binary, und starten Sie die MongoDB-Services

  1. Erstellen Sie drei OCI Compute-Instanzen für das Replikationssetup, und hängen Sie das Block-Volume für das Datenverzeichnis an.

    image

  2. 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
    

    image

  3. 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
    

    image

    image

    Hinweis: Schlüsseldatei ist für die sichere Authentifizierung erforderlich. Zu Testzwecken kann die Schlüsseldatei mit dem Befehl open-ssl generiert werden.

  4. Erstellen Sie die Konfigurationsdatei mit dem folgenden Befehl.

    cat /etc/mongod.conf
    

    image

  5. Deaktivieren Sie die selinux, und starten Sie die mongod-Services mit den folgenden Befehlen.

    setenforce 0
    getenforce
    systemctl start mongod
    systemctl status mongod
    

    image

  6. Führen Sie dieselben Vorgänge auf den verbleibenden zwei Knoten aus, die als sekundärer Knoten fungieren.

Aufgabe 2: MongoDB-Replikatset erstellen

  1. Stellen Sie eine Verbindung zum ersten Knoten her, und stellen Sie eine Verbindung zur Admin-Datenbank her.

  2. 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
    

    image

    rs.initiate()
    db.createUser({
    ...  user: "admin",
    ...  pwd: "password",
    ...  roles: [
    ...         { role: "root", db: "admin" }
    ...   ]
    ...  })
    

    image

    db.auth("admin","password")
    rs.conf()
    

    image

  3. 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")
    

    image

    rs.add("10.0.1.51:27017")
    

    image

  4. Prüfen Sie Konfiguration und Status des Replikatsets mit den folgenden Befehlen.

    db.auth("admin","password")
    rs.conf()
    

    image

    rs.status()
    

    image

    image

    image

    image

    rs.printReplicationInfo()
    

    image

Aufgabe 3: Daten in das Replikatset MongoDB laden

  1. Stellen Sie den Dump mit dem Befehl mongorestore in das Replikatset MongoDB zurück.

    mongorestore --username admin --password password dump/
    

    image

    image

    image

    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.

  2. 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
    

    image

Aufgabe 4: Oracle Autonomous JSON Database in OCI konfigurieren

  1. 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.

    image

    image

    image

    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.

  2. Klicken Sie auf Toolkonfiguration bearbeiten, aktivieren Sie die MongoDB-API, und kopieren Sie die URL.

    image

    image

    image

    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

  1. 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
    

    image

    cat sqlnet.Ora
    

    image

    image

  2. 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
    

    image

    tar -xvf mongodb-database-toosl-rhel70-x86_64-100.5.2.tgz
    

    image

    wget https://downloads.mongodb.com/compass/mongosh-1.3.1-linux-x64.tgz
    

    image

    tar -xvf mongosh-1.3.1-linux-x64.tgz
    

    image

  3. 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
    

    image

    image

    image

  4. 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
    

    image

Aufgabe 6: Dump in OCI Object Storage-Bucket hochladen und in ATP importieren

  1. Erstellen Sie einen Dump einer Collection mit dem Befehl mongoexport.

    image

    mongoexport --host=mrep1 --port 27017 --username=admin --authicationDatabase=admin --collection=data --db=sample_weatherdata --out=wheather_data.Json
    

    image

  2. Klicken Sie auf Hochladen, um den Dump einer einzelnen Sammlung von Datenbanken hochzuladen, die mit dem Befehl mongoexport im Replikatset MongoDB erstellt wurde.

    image

  3. Klicken Sie auf Objektdetails anzeigen, um Objektendpunktdetails abzurufen.

    image

    image

  4. Führen Sie den Befehl curl aus, um die Daten aus diesem Objekt und den Befehl mongoimport 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
    

    image

  5. Prüfen Sie, ob die Erfassung in die Verfügbarkeitsdatenbank importiert wurde.

    image

  6. Prüfen Sie, ob die Anzahl der Dokumente mit der Quelle übereinstimmt.

    image

    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.

  7. 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
    

    image

    image

  8. 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

  1. 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.

    image

    image

  2. Erstellen Sie das Secret im Voraus über die OCI-Konsole für die Anmeldung und Verwaltung von Admin-Benutzern.

    image

    image

    image

Aufgabe 8: Verbindung für MongoDB und Oracle Autonomous JSON Database erstellen

  1. Gehen Sie zur OCI-Konsole, navigieren Sie zu Oracle Database, GoldenGate, Verbindungen, und klicken Sie auf Verbindung erstellen.

    image

  2. Geben Sie die folgenden Informationen ein, wie im Image dargestellt, um die Quelldatenbankverbindung zu erstellen.

    image

  3. Wiederholen Sie den 1. Schritt, und geben Sie die folgenden Informationen ein, wie im Bild dargestellt, um die Verbindung zur Zieldatenbank zu erstellen.

    image

Aufgabe 9: Verbindung zum OCI-Deployment GoldenGate zuweisen und testen

  1. Gehen Sie zur OCI-Konsole, navigieren Sie zu Oracle Database, GoldenGate, Verbindungen, und klicken Sie auf die Verbindung, die in Aufgabe 8 erstellt wurde.

  2. Klicken Sie auf Zugewiesene Deployments und Deployment zuweisen.

    image

  3. Wählen Sie das Deployment aus, und klicken Sie auf Deployment zuweisen.

    image

  4. Klicken Sie auf die drei Punkte und Verbindung testen, um sicherzustellen, dass sie erfolgreich ist.

    image

    image

Aufgabe 10: Extract- und Replicat-Prozesse erstellen

  1. 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.

    image

  2. Geben Sie den Benutzernamen und das Kennwort ein, die beim Deployment erstellt wurden.

    image

    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.

  3. Exportprozess konfigurieren

    Wählen Sie Verbindungsalias aus, der für die Quelldatenbank MongoDB erstellt wurde.

    image

    image

    In der Parameterdatei ist sample_airbnb eine Datenbank in MongoDB, und * stellt alle Collections in dieser Datenbank dar.

    image

  4. Replicat-Prozess konfigurieren

    1. Wählen Sie Classic Replicat als Replikattyp aus.

      image

    2. 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.

      image

      Der Replicat-Prozess repliziert alle Transaktionen von der Datenbank sample_airbnb in MongoDB in sample_airbnb-Schemas in Oracle Autonomous JSON Database.

      image

    Hinweis: Sie müssen den Quell- und Zieldatenbanknamen sowie den Schemanamen in der Konfiguration ändern.

  5. 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
    

    image

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.

image

Aufgabe 12: Datensynchronisierung testen

  1. 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()
      

      image

    • Zieldatenbank:

      show dbs
      use Sample_airbnb
      show collections
      db.emp.countDocuments()
      

      image

  2. 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"})
      

      image

    • Zieldatenbank:

      db.emp.find({"name":"joe"})
      db.emp.find({"name":"John"})
      

      image

  3. 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"})
      

      image

    • Zieldatenbank:

      show DBs
      show collections
      db.emp.find({"name":"John"})
      

      image

      image

      image

Aufgabe 13: Verbindung zu MongoDB Atlas herstellen

Die Verbindung zu MongoDB Atlas unterscheidet sich von der Verbindung zu einer On-Premise-Datenbank MongoDB.

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.

image

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:

Danksagungen

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.