Daten von MongoDB zu Oracle NoSQL Database Cloud Service migrieren

Es gibt zwei Optionen zum Migrieren von Daten von MongoDB zu Oracle NoSQL Database Cloud Service mit dem Oracle NoSQL Database-Migrator:

  • Oracle NoSQL-Standardschema verwenden
  • Benutzerdefiniertes Schema verwenden

Für beide Optionen ist eine JSON-Konfigurationsdatei erforderlich, die Informationen zu den Quelldateien und der Zieldatenbank (Sink) enthält. In beiden Szenarios ist die Quelle formatierte JSON-Dateien im Format MongoDB, die in OCI Object Storage gespeichert sind, während das Ziel die Oracle NoSQL Database Cloud Service-Datenbank ist. Die Konfigurations-JSON-Datei muss den Abschnitt transforms enthalten, wenn ein benutzerdefiniertes Schema verwendet wird.

Daten mit dem Oracle NoSQL-Standardschema migrieren

Bei der Migration mit dem Standardschema wird eine neue Oracle NoSQL Database Cloud Service-Tabelle mit zwei Spalten erstellt: id und document. Für jeden Eintrag in der JSON-Exportdatei MongoDB wird die Spalte _id in der Tabelle Oracle NoSQL Database Cloud Service zu id migriert, während die anderen Spalten der JSON-Exportdatei MongoDB in der neuen Spalte document aggregiert werden.

In den folgenden Schritten wird beschrieben, wie Daten mit dem Oracle-Standardschema NoSQL migriert werden.

  1. Melden Sie sich bei MongoDB an, und führen Sie mongoexport aus, um die Datenerfassung in formatierte JSON-Dateien im MongoDB-Format zu exportieren. Beispiel:
    [opc@mongodb-server ~] mongoexport --collection collection_name --out collection_name.json
  2. Teilen Sie MongoDB-JSON-Dateien mit mehr als 13.500 Datensätzen mit dem Oracle Linux-Aufteilungsutility, um die JSON-Datei MongoDB in mehrere JSON-Dateien mit jeweils 13.500 Datensätzen aufzuteilen. Beispiel:
    $split -l 13500 –additional-suffix .json collection_name.json collection_name
  3. Melden Sie sich bei der OCI-Konsole an, um einen OCI Object Storage-Bucket zu erstellen, falls noch kein Bucket vorhanden ist.
    Bucket-Name und Namespace beachten
  4. Mit der OCI-Konsole oder der REST-API können Sie die Datei(en) aus Schritt 2 in den Bucket aus Schritt 3 hochladen.
  5. Erstellen Sie in der OCI-Konsole einen API-Schlüssel für den OCI-Benutzer, der Eigentümer der Oracle NoSQL Database Cloud Service-Zieltabelle ist. Dieser Benutzer muss über Berechtigungen zum Erstellen und Verwalten der Tabelle verfügen.
    Beachten Sie die Benutzer-OCID, die Mandanten-OCID, den Fingerprint und die OCI-Regions-ID. Speichern Sie die privaten und öffentlichen Schlüssel in PEM-Dateien. Dieser API-Schlüssel wird von Oracle NoSQL Database Migrator verwendet, um die formatierten JSON-Dateien im Format MongoDB abzurufen, eine neue Tabelle zu erstellen und die Daten aus den JSON-Dateien MongoDB in die Tabelle hochzuladen.
  6. Erstellen Sie ein Compartment für die Oracle NoSQL Database Cloud Service-Tabelle, falls noch kein Compartment vorhanden ist.
    Notieren Sie sich den Compartment-Namen.
  7. Erstellen Sie eine Compute-Instanz.
    Auf dieser Compute-Instanz wird die Oracle NoSQL Database-Migrator-Software ausgeführt. Eine Instanz vom Typ "Immer kostenlos" (VM.Standard.E4). Flex mit 1 OCPU und 16 GB Arbeitsspeicher) ist ausreichend und kostengünstig.
  8. Melden Sie sich mit SSH wie folgt als opc user bei der neuen Compute-Instanz an, um Java 11 zu installieren:
    [opc@oci-compute ~]$ sudo yum install java-11
  9. Laden Sie die Binärdateien von Oracle NoSQL Database Migrator 1.5.0 herunter, falls noch nicht geschehen. Weitere Einzelheiten finden Sie im Abschnitt "Softwareanforderungen prüfen".
  10. Laden Sie mit SCP die ZIP-Datei für den Oracle NoSQL Database-Migrator in das Home-Verzeichnis opc user's in der neuen Compute-Instanz hoch.
  11. Melden Sie sich mit SSH als opc user bei der Compute-Instanz an, um die im vorherigen Schritt heruntergeladene Oracle NoSQL Database-Migrator-Software zu dekomprimieren. Der Inhalt der Datei wird in ein neues Verzeichnis namens /home/opc/nosql-migrator-1.5.0 dekomprimiert. Dekomprimieren Sie die Datei wie folgt:
    [opc@oci-compute ~]$ unzip V1033765-1.zip
    [opc@oci-compute ~]$ ls -l
    total 61964
    drwxr-xr-x. 3 opc opc 4096 Feb 23 20:32 nosql-migrator-1.5.0
    -rw-r--r--. 1 opc opc 63446080 Feb 14 19:26 V1033765-01.zip
    [opc@jc-bastion-phx migrator]$
  12. Laden Sie mit SCP die Private-Key-PEM-Datei aus Schritt 5 in das Home-Verzeichnis der opc user der Compute-Instanz hoch, in der Oracle NoSQL Database Migrator im vorherigen Schritt dekomprimiert wurde.
  13. Melden Sie sich mit SSH als opc user bei der Compute-Instanz an, um eine OCI-Identitätsdatei zu erstellen. Erstellen Sie die OCI-Identitätsdatei im Verzeichnis /home/opc/.OCI mit dem folgenden Inhalt:
    [opc@oci-compute ~]$ cat .oci/config 
    [DEFAULT]
    user=user_OCID_from_step_5
    fingerprint=fingerprint_from_step_5
    tenancy=tenancy_OCID_from_step_5
    region=region_ID_from_step_5
    key_file=full_path_to_private_key_PEM_file_uploaded_step_12
  14. Wechseln Sie in der Compute-Instanz das Verzeichnis in das Unterverzeichnis nosql-migrator-1.5.0. Erstellen Sie wie folgt eine JSON-Datei für die Migrationskonfiguration, die Informationen zur Quelle und zum Ziel enthält (Sink):
    [opc@oci-compute nosql-migrator-1.5.0]$ cat migrator-config-mongodbjson-bucket_def-schema.json 
    {
       "source":{
          "type":"object_storage_oci",
          "format":"mongodb_json",
          "endpoint":"https://objectstorage.region_ID_from_step_5.oraclecloud.com",
          "namespace":"namespace_from_step_3",
          "bucket":"bucket_name_from_step_3",
          "prefix":"source_json_filename_or_prefix_from_step_2",
          "credentials":"/home/opc/.oci/config",
          "credentialsProfile":"default"
       },
       "sink":{
          "type":"nosqldb_cloud",
          "endpoint":"https://nosql.oci_region_ID_from_step_5.oci.oraclecloud.com",
          "table":"new_Oracle_NoSQL_Database_Cloud_Service_table_name",
          "schemaInfo":{
             "defaultSchema":true,
             "readUnits":50,
             "writeUnits":50,
             "storageSize":25
          },
          "compartment":"compartment_name_from_step_6",
          "includeTTL":false,
          "credentials":"/home/opc/.oci/config",
          "credentialsProfile":"DEFAULT",
          "writeUnitsPercent":90,
          "overwrite":true,
          "requestTimeoutMs":5000
       },
       "abortOnError":false,
       "migratorVersion":"1.5.0"
    }
    [opc@oci-compute nosql-migrator-1.5.0]$
  15. Führen Sie die Datenmigration mit dem Oracle NoSQL Database-Migrator und der im vorherigen Schritt erstellten JSON-Datei der Migrationskonfiguration wie folgt aus:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-mongodbjson-bucket_def_schema.json
    Der Migrationsjob erstellt eine neue Oracle NoSQL Database-Migratortabelle mit dem Standardschema. Lesen Sie dann die formatierten JSON-Dateien im Format MongoDB aus OCI Object Storage, um die Daten aus diesen Dateien in die neu erstellte Tabelle zu importieren.

Daten mit einem benutzerdefinierten Schema migrieren

Wenn Sie ein benutzerdefiniertes Schema für die Migration verwenden, muss die neue Oracle NoSQL Database Cloud Service-Tabelle ähnlich wie das Schema der Tabelle MongoDB definiert werden. Die Konfigurationsdatei für den Datenbankmigrator NoSQL muss einen Transformationseintrag enthalten, der NoSQL Database Migrator anweist, wie die Spalte _id in id in der neuen Tabelle konvertiert wird.

In den folgenden Schritten wird beschrieben, wie Daten mit einem benutzerdefinierten Oracle NoSQL-Schema migriert werden.

  1. Melden Sie sich bei MongoDB an, und führen Sie mongoexport aus, um die Datenerfassung in formatierte JSON-Dateien im MongoDB-Format zu exportieren. Beispiel:
    [opc@mongodb-server ~] mongoexport --collection collection_name --out collection_name.json
  2. Teilen Sie MongoDB-JSON-Dateien mit mehr als 13.500 Datensätzen mit dem Oracle Linux-Aufteilungsutility, um die JSON-Datei MongoDB in mehrere JSON-Dateien mit jeweils 13.500 Datensätzen aufzuteilen. Beispiel:
    $split -l 13500 –additional-suffix .json collection_name.json collection_name
  3. Prüfen Sie mit dem Oracle Linux-Befehl cat oder vi die generierten JSON-Dateien im MongoDB-Format. Beachten Sie Folgendes:
    • Notieren Sie die Namen und Datentypen für jede Spalte. Verwenden Sie diese Informationen, um eine Oracle NoSQL Database Cloud Service-Tabellenschema-Datendefinitionssprache (DDL) zu erstellen.
    • Die erste Spalte muss den Namen id aufweisen. Die übrigen Spalten müssen denselben Namen und denselben Typ wie in der JSON-Datei MongoDB aufweisen.
  4. Speichern Sie die Schema-DDL in einer Datei. Die Schema-DDL sollte ungefähr wie folgt aussehen:
    $ cat collection_name.ddl
    CREATE TABLE table_name ( id string, column_2_name column_2_type, column_n_name column_n_type, PRIMARY KEY ( id ) )
  5. Melden Sie sich bei der OCI-Konsole an, um einen OCI Object Storage-Bucket zu erstellen, falls noch kein Bucket vorhanden ist.
    Notieren Sie sich den Bucket-Namen und den Namespace.
  6. Mit der OCI-Konsole oder der REST-API können Sie die Datei(en) aus den Schritten 2 und 3 in den neuen Bucket hochladen, der in Schritt 5 erstellt wurde.
  7. Erstellen Sie in der OCI-Konsole einen API-Schlüssel für den OCI-Benutzer, der Eigentümer der Oracle NoSQL Database Cloud Service-Zieltabelle ist. Dieser Benutzer muss über Berechtigungen zum Erstellen und Verwalten der Tabelle verfügen.
    Beachten Sie die Benutzer-OCID, die Mandanten-OCID, den Fingerprint und die OCI-Regions-ID. Speichern Sie die privaten und öffentlichen Schlüssel in PEM-Dateien. Dieser API-Schlüssel wird von Oracle NoSQL Database Migrator verwendet, um die formatierten JSON-Dateien im Format MongoDB abzurufen, eine neue Tabelle zu erstellen und die Daten aus den JSON-Dateien MongoDB in die Tabelle hochzuladen.
  8. Erstellen Sie ein Compartment für die Oracle NoSQL Database Cloud Service-Tabelle, falls noch kein Compartment vorhanden ist.
    Notieren Sie sich den Compartment-Namen.
  9. Erstellen Sie eine Compute-Instanz.
    Auf dieser Compute-Instanz wird die Oracle NoSQL Database-Migrator-Software ausgeführt. Eine Instanz vom Typ "Immer kostenlos" (VM.Standard.E4). Flex mit 1 OCPU und 16 GB Arbeitsspeicher) ist ausreichend und kostengünstig.
  10. Melden Sie sich mit SSH wie folgt als opc user bei der neuen Compute-Instanz an, um Java 11 zu installieren:
    [opc@oci-compute ~]$ sudo yum install java-11
  11. Laden Sie die Binärdateien von Oracle NoSQL Database Migrator 1.5.0 herunter, falls noch nicht geschehen. Weitere Einzelheiten finden Sie im Abschnitt "Softwareanforderungen prüfen".
  12. Laden Sie mit SCP die ZIP-Datei für den Oracle NoSQL Database-Migrator in das Home-Verzeichnis opc user's in der neuen Compute-Instanz hoch.
  13. Melden Sie sich mit SSH als opc user bei der Compute-Instanz an, um die im vorherigen Schritt heruntergeladene Oracle NoSQL Database-Migrator-Software zu dekomprimieren. Der Inhalt der Datei wird in ein neues Verzeichnis namens /home/opc/nosql-migrator-1.5.0 dekomprimiert. Dekomprimieren Sie die Datei wie folgt:
    [opc@oci-compute ~]$ unzip V1033765-1.zip
    [opc@oci-compute ~]$ ls -l
    total 61964
    drwxr-xr-x. 3 opc opc 4096 Feb 23 20:32 nosql-migrator-1.5.0
    -rw-r--r--. 1 opc opc 63446080 Feb 14 19:26 V1033765-01.zip
    [opc@jc-bastion-phx migrator]$
  14. Laden Sie mit SCP die Private-Key-PEM-Datei aus Schritt 7 in das Home-Verzeichnis der opc user der Compute-Instanz hoch, in der Oracle NoSQL Database Migrator im vorherigen Schritt dekomprimiert wurde.
  15. Melden Sie sich mit SSH als opc user bei der Compute-Instanz an, um eine OCI-Identitätsdatei zu erstellen. Erstellen Sie die OCI-Identitätsdatei im Verzeichnis /home/opc/.OCI mit dem folgenden Inhalt:
    [opc@oci-compute ~]$ cat .oci/config 
    [DEFAULT]
    user=user_OCID_from_step_7
    fingerprint=fingerprint_from_step_7
    tenancy=tenancy_OCID_from_step_7
    region=region_ID_from_step_7
    key_file=full_path_to_private_key_PEM_file_uploaded_step_14
  16. Wechseln Sie in der Compute-Instanz das Verzeichnis in das Unterverzeichnis nosql-migrator-1.5.0. Erstellen Sie wie folgt eine JSON-Datei für die Migrationskonfiguration, die Informationen zur Quelle und zum Ziel enthält (Sink):
    [opc@oci-compute nosql-migrator-1.5.0]$ cat migrator-config-mongodbjson-bucket-src_schema.json 
    {
      "source": {
        "type": "object_storage_oci",
        "format": "mongodb_json",
        "endpoint": "https://objectstorage.region_ID_from_step_7.oraclecloud.com",
        "namespace": "namespace_from_step_5",
        "bucket": "bucket_name_from_step_5",
        "prefix": "source_json_filename_or_prefix_from_step_2",
        "schemaInfo": {
          "schemaObject": "collection_name_ddl_from_step_3"
        },
        "credentials": "/home/opc/.oci/config",
        "credentialsProfile": "DEFAULT"
      },
      "sink": {
        "type": "nosqldb_cloud",
        "endpoint": "https://nosql.oci_region_ID_from_step_7.oci.oraclecloud.com",
        "table": "new_Oracle_NoSQL_Database_Cloud_Service_table_name_from_step_3",
        "schemaInfo": {
          "useSourceSchema": true,
          "readUnits": 50,
          "writeUnits": 50,
          "storageSize": 25
        },
        "compartment": "compartment_name_from_step_8",
        "includeTTL": false,
        "credentials": "/home/opc/.oci/config",
        "credentialsProfile": "DEFAULT",
        "writeUnitsPercent": 90,
        "overwrite": true,
        "requestTimeoutMs": 5000
      },
      "transforms": {
        "renameFields": {
          "_id": "id"
        }
      },
      "abortOnError": true,
      "migratorVersion": "1.5.0"
    }
    [opc@oci-compute nosql-migrator-1.5.0]$
  17. Führen Sie die Datenmigration mit dem Oracle NoSQL Database-Migrator und der im vorherigen Schritt erstellten JSON-Datei der Migrationskonfiguration wie folgt aus:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-mongodbjson-bucket-src_schema.json
    Der Migrationsjob erstellt eine neue Oracle NoSQL Database-Migratortabelle mit dem benutzerdefinierten Schema. Lesen Sie dann die JSON-Datei(en) im Format MongoDB aus OCI Object Storage, um die Daten aus diesen Dateien in die neu erstellte Tabelle zu importieren.