MongoDB에서 Oracle NoSQL Database Cloud Service로 데이터 마이그레이션

Oracle NoSQL Database Migrator를 사용하면 MongoDB에서 Oracle NoSQL Database Cloud Service로 데이터를 마이그레이션할 수 있는 두 가지 옵션이 있습니다.

  • Oracle NoSQL 기본 스키마 사용
  • 사용자정의 스키마 사용

두 옵션 모두 소스 파일과 대상 데이터베이스(싱크)에 대한 정보를 포함하는 구성 JSON 파일이 필요합니다. 두 시나리오 모두에서 소스는 OCI Object Storage에 저장된 MongoDB 형식의 JSON 파일이고, 대상은 Oracle NoSQL Database Cloud Service 데이터베이스입니다. 사용자정의 스키마를 사용하는 경우 구성 JSON 파일에 transforms 섹션이 포함되어야 합니다.

Oracle NoSQL 기본 스키마를 사용하여 데이터 이전

기본 스키마를 사용하여 마이그레이션할 때 iddocument의 두 열로 새 Oracle NoSQL Database Cloud Service 테이블이 생성됩니다. MongoDB JSON 익스포트 파일의 각 항목에 대해 _id 열은 Oracle NoSQL Database Cloud Service 테이블의 id로 마이그레이션되고, MongoDB JSON 익스포트 파일의 다른 열은 새 document 열에서 집계됩니다.

다음 단계에서는 Oracle NoSQL 기본 스키마를 사용하여 데이터를 이전하는 방법에 대해 설명합니다.

  1. MongoDB에 로그인하고 mongoexport을 실행하여 데이터 수집을 MongoDB 형식의 JSON 파일로 익스포트합니다. 예를 들면, 다음과 같습니다.
    [opc@mongodb-server ~] mongoexport --collection collection_name --out collection_name.json
  2. Oracle Linux 분할 유틸리티를 사용하여 MongoDB JSON 파일을 13,500개 이상의 레코드로 분할하고 MongoDB JSON 파일을 각각 13,500개의 레코드로 구성된 여러 JSON 파일로 나눕니다. 예를 들면, 다음과 같습니다.
    $split -l 13500 –additional-suffix .json collection_name.json collection_name
  3. OCI 콘솔에 로그인하여 OCI Object Storage 버킷(아직 없는 경우)을 생성합니다.
    버킷 이름 및 네임스페이스 참고
  4. OCI 콘솔 또는 REST API를 사용하여 2단계의 파일을 3단계의 버킷으로 업로드합니다.
  5. OCI 콘솔에서 대상 Oracle NoSQL Database Cloud Service 테이블을 소유할 OCI 사용자에 대한 API 키를 생성합니다. 이 사용자에게 테이블을 생성하고 관리할 수 있는 권한이 있어야 합니다.
    사용자 OCID, 테넌시 OCID, 지문 및 OCI 지역 ID를 기록해 둡니다. PEM 파일에 개인 및 공개 키를 저장합니다. 이 API 키는 Oracle NoSQL Database Migrator가 MongoDB 형식의 JSON 파일을 검색하고, 새 테이블을 생성하고, MongoDB JSON 파일의 데이터를 테이블로 업로드하는 데 사용됩니다.
  6. Oracle NoSQL Database Cloud Service 테이블이 없는 경우 해당 테이블에 대한 구획을 생성합니다.
    구획 이름을 기록해 둡니다.
  7. 컴퓨트 인스턴스를 생성합니다.
    이 컴퓨트 인스턴스는 Oracle NoSQL Database Migrator 소프트웨어를 실행합니다. 항상 무료 컴퓨팅 인스턴스(VM.Standard.E4). OCPU 1개 및 16GB 메모리를 사용한 유연성으로도 충분하며 비용 효율적입니다.
  8. SSH를 사용하여 opc user로 새 컴퓨트 인스턴스에 로그인하여 다음과 같이 Java 11을 설치합니다.
    [opc@oci-compute ~]$ sudo yum install java-11
  9. 아직 다운로드하지 않은 경우 Oracle NoSQL Database Migrator 1.5.0 바이너리를 다운로드합니다. 자세한 내용은 소프트웨어 요구 사항 검토 절을 참조하십시오.
  10. SCP를 사용하여 Oracle NoSQL Database Migrator ZIP 파일을 새 컴퓨트 인스턴스의 opc user's 홈 디렉토리로 업로드합니다.
  11. SSH를 사용하여 opc user로 컴퓨팅 인스턴스에 로그인하여 이전 단계에서 다운로드한 Oracle NoSQL Database Migrator 소프트웨어의 압축을 풉니다. 파일 내용이 /home/opc/nosql-migrator-1.5.0라는 새 디렉토리로 압축 해제됩니다. 다음과 같이 파일의 압축을 풉니다.
    [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. SCP를 사용하여 단계 5의 전용 키 PEM 파일을 이전 단계에서 Oracle NoSQL Database Migrator의 압축이 해제된 컴퓨트 인스턴스의 opc user 홈 디렉토리로 업로드합니다.
  13. SSH를 사용하여 opc user로 컴퓨트 인스턴스에 로그인하여 OCI ID 파일을 생성합니다. 다음 내용을 사용하여 /home/opc/.oci 디렉토리에 OCI ID 파일을 생성합니다.
    [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. 컴퓨트 인스턴스에서 디렉토리를 nosql-migrator-1.5.0 하위 디렉토리로 변경합니다. 다음과 같이 소스 및 대상(싱크)에 대한 정보가 포함된 이전 구성 JSON 파일을 생성합니다.
    [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. 다음과 같이 Oracle NoSQL Database Migrator 및 이전 단계에서 생성된 마이그레이션 구성 JSON 파일을 사용하여 데이터 마이그레이션을 실행합니다.
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-mongodbjson-bucket_def_schema.json
    마이그레이션 작업은 기본 스키마를 사용하여 새 Oracle NoSQL Database Migrator 테이블을 생성한 다음, OCI Object Storage에서 MongoDB 형식의 JSON 파일을 읽고, 해당 파일의 데이터를 새로 생성된 테이블로 가져옵니다.

사용자 정의 스키마를 사용하여 데이터 이전

사용자정의 스키마를 사용하여 마이그레이션할 때 새 Oracle NoSQL Database Cloud Service 테이블은 MongoDB 테이블의 스키마와 유사하게 정의되어야 합니다. NoSQL 데이터베이스 마이그레이터 구성 파일에는 NoSQL 데이터베이스 마이그레이터가 새 테이블에서 _id 열을 id로 변환하는 방법을 알려주는 변환 항목이 포함되어야 합니다.

다음 단계에서는 Oracle NoSQL 사용자정의 스키마를 사용하여 데이터를 이전하는 방법에 대해 설명합니다.

  1. MongoDB에 로그인하고 mongoexport을 실행하여 데이터 수집을 MongoDB 형식의 JSON 파일로 익스포트합니다. 예를 들면, 다음과 같습니다.
    [opc@mongodb-server ~] mongoexport --collection collection_name --out collection_name.json
  2. Oracle Linux 분할 유틸리티를 사용하여 MongoDB JSON 파일을 13,500개 이상의 레코드로 분할하고 MongoDB JSON 파일을 각각 13,500개의 레코드로 구성된 여러 JSON 파일로 나눕니다. 예를 들면, 다음과 같습니다.
    $split -l 13500 –additional-suffix .json collection_name.json collection_name
  3. Oracle Linux cat 또는 vi 명령을 사용하여 생성된 MongoDB 형식 JSON 파일을 검사합니다. 다음 사항에 유의하십시오.
    • 각 열의 이름과 데이터 유형을 기록해 둡니다. 이 정보를 사용하여 Oracle NoSQL Database Cloud Service 테이블 스키마 DDL(데이터 정의어)을 생성합니다.
    • 첫번째 열의 이름은 id여야 합니다. 나머지 열은 MongoDB JSON 파일과 동일한 이름 및 유형을 가져야 합니다.
  4. 스키마 DDL을 파일에 저장합니다. 스키마 DDL은 다음과 유사해야 합니다.
    $ 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. OCI 콘솔에 로그인하여 OCI Object Storage 버킷(아직 없는 경우)을 생성합니다.
    버킷 이름 및 네임스페이스를 기록해 둡니다.
  6. OCI 콘솔 또는 REST API를 사용하여 2단계 및 3단계의 파일을 5단계에서 생성된 새 버킷으로 업로드합니다.
  7. OCI 콘솔에서 대상 Oracle NoSQL Database Cloud Service 테이블을 소유할 OCI 사용자에 대한 API 키를 생성합니다. 이 사용자에게 테이블을 생성하고 관리할 수 있는 권한이 있어야 합니다.
    사용자 OCID, 테넌시 OCID, 지문 및 OCI 지역 ID를 기록해 둡니다. PEM 파일에 개인 및 공개 키를 저장합니다. 이 API 키는 Oracle NoSQL Database Migrator가 MongoDB 형식의 JSON 파일을 검색하고, 새 테이블을 생성하고, MongoDB JSON 파일의 데이터를 테이블로 업로드하는 데 사용됩니다.
  8. Oracle NoSQL Database Cloud Service 테이블이 없는 경우 해당 테이블에 대한 구획을 생성합니다.
    구획 이름을 기록해 둡니다.
  9. 컴퓨트 인스턴스를 생성합니다.
    이 컴퓨트 인스턴스는 Oracle NoSQL Database Migrator 소프트웨어를 실행합니다. 항상 무료 컴퓨팅 인스턴스(VM.Standard.E4). OCPU 1개 및 16GB 메모리를 사용한 유연성으로도 충분하며 비용 효율적입니다.
  10. SSH를 사용하여 opc user로 새 컴퓨트 인스턴스에 로그인하여 다음과 같이 Java 11을 설치합니다.
    [opc@oci-compute ~]$ sudo yum install java-11
  11. 아직 다운로드하지 않은 경우 Oracle NoSQL Database Migrator 1.5.0 바이너리를 다운로드합니다. 자세한 내용은 소프트웨어 요구 사항 검토 절을 참조하십시오.
  12. SCP를 사용하여 Oracle NoSQL Database Migrator ZIP 파일을 새 컴퓨트 인스턴스의 opc user's 홈 디렉토리로 업로드합니다.
  13. SSH를 사용하여 opc user로 컴퓨팅 인스턴스에 로그인하여 이전 단계에서 다운로드한 Oracle NoSQL Database Migrator 소프트웨어의 압축을 풉니다. 파일 내용이 /home/opc/nosql-migrator-1.5.0라는 새 디렉토리로 압축 해제됩니다. 다음과 같이 파일의 압축을 풉니다.
    [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. SCP를 사용하여 단계 7의 전용 키 PEM 파일을 이전 단계에서 Oracle NoSQL Database Migrator의 압축이 해제된 컴퓨트 인스턴스의 opc user 홈 디렉토리로 업로드합니다.
  15. SSH를 사용하여 opc user로 컴퓨트 인스턴스에 로그인하여 OCI ID 파일을 생성합니다. 다음 내용을 사용하여 /home/opc/.oci 디렉토리에 OCI ID 파일을 생성합니다.
    [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. 컴퓨트 인스턴스에서 디렉토리를 nosql-migrator-1.5.0 하위 디렉토리로 변경합니다. 다음과 같이 소스 및 대상(싱크)에 대한 정보가 포함된 이전 구성 JSON 파일을 생성합니다.
    [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. 다음과 같이 Oracle NoSQL Database Migrator 및 이전 단계에서 생성된 마이그레이션 구성 JSON 파일을 사용하여 데이터 마이그레이션을 실행합니다.
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-mongodbjson-bucket-src_schema.json
    마이그레이션 작업은 사용자정의 스키마를 사용하여 새 Oracle NoSQL Database Migrator 테이블을 생성한 다음, OCI Object Storage에서 MongoDB 형식의 JSON 파일을 읽고, 해당 파일의 데이터를 새로 생성된 테이블로 가져옵니다.