주:

MongoDB Atlas 또는 온프레미스에서 실행되는 MongoDB 데이터베이스를 Oracle Autonomous JSON Database로 마이그레이션

소개

MongoDB는 유연하고 JSON과 유사한 문서에 데이터를 생성하고 저장하는 데 사용되는 인기 있는 오픈 소스 데이터베이스 중 하나입니다. 즉, 필드는 문서마다 다를 수 있고 시간이 지남에 따라 데이터 구조를 변경할 수 있습니다.

컨버지드 데이터베이스(Converged Database)라고 불리는 세계적으로 유명한 관계형 다중 모델 데이터베이스 중 하나인 Oracle은 JSON을 처리할 수 있는 뛰어난 기능을 갖추고 있습니다. Oracle은 v12c에서 JSON에 대한 지원을 도입했고, JSON 데이터를 varchar2 또는 LOB(대형 객체)(CLOB(Character Large Object)/BLOB(Binary Large Object)로 저장했습니다.

MongoDB 과제:

Oracle에서 JSON 데이터 유형을 사용하는 이점:

참고: Oracle Cloud Infrastructure(OCI) GoldenGate Big Data 배치, 소스 및 대상 데이터베이스 간에 접속이 설정되었는지 확인하십시오.

목표

필요 조건

작업 1: MongoDB 이진 설치 및 MongoDB 서비스 시작

  1. 복제 설정을 위한 3개의 OCI 컴퓨트 인스턴스를 생성하고 데이터 디렉토리에 대한 블록 볼륨을 연결합니다.

    이미지

  2. 다음 명령을 사용하여 yum 저장소를 업데이트하여 MongoDB 바이너리를 다운로드합니다.

    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
    

    이미지

  3. 다음 명령을 사용하여 데이터 디렉토리를 생성하고 필요한 권한을 부여합니다.

    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
    

    이미지

    이미지

    주: 키 파일은 보안 인증에 필요합니다. 테스트 목적으로 open-ssl 명령을 사용하여 키 파일을 생성할 수 있습니다.

  4. 다음 명령을 사용하여 구성 파일을 만듭니다.

    cat /etc/mongod.conf
    

    이미지

  5. selinux를 사용 안함으로 설정하고 다음 명령을 사용하여 mongod 서비스를 시작합니다.

    setenforce 0
    getenforce
    systemctl start mongod
    systemctl status mongod
    

    이미지

  6. 보조 노드로 작동할 나머지 두 노드에서 동일한 작업을 수행합니다.

작업 2: MongoDB 복제본 세트 만들기

  1. 첫번째 노드에 접속하고 관리 데이터베이스에 접속합니다.

  2. 다음 명령을 실행하여 복제를 시작하고 첫번째 관리 사용자를 만듭니다. 이 복제 사용자는 복제 구성 및 관리에 사용됩니다.

    mongosh
    use admin
    

    이미지

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

    이미지

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

    이미지

  3. 다음 명령을 사용하여 나머지 두 노드를 추가합니다. 보조 노드로 추가됩니다.

    rs.add("10.0.1.163;27017")
    

    이미지

    rs.add("10.0.1.51:27017")
    

    이미지

  4. 다음 명령을 사용하여 복제본 세트의 구성 및 상태를 확인합니다.

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

    이미지

    rs.status()
    

    이미지

    이미지

    이미지

    이미지

    rs.printReplicationInfo()
    

    이미지

작업 3: MongoDB 복제본 세트로 데이터 로드

  1. mongorestore 명령을 사용하여 덤프를 MongoDB 복제본 세트로 복원합니다.

    mongorestore --username admin --password password dump/
    

    이미지

    이미지

    이미지

    주: 위의 덤프는 해당 복제본 세트에서 실행 중인 모든 데이터베이스에 대해 mongodump 명령을 사용하여 설정된 다른 MongoDB 복제본에서 가져왔습니다.

  2. 다음 명령을 실행하여 모든 데이터베이스 및 해당 모음이 MongoDB 복제본 세트로 복원되었는지 확인합니다.

    mongosh
    use admin
    db.auth("admin","password")
    show dbs
    

    이미지

작업 4: OCI에서 Oracle Autonomous JSON Database 구성

  1. OCI 콘솔에 로그인하여 Oracle Database, Autonomous Database로 이동하고 이미지에 표시된 대로 다음 정보를 입력하여 자율운영 데이터베이스를 생성합니다.

    이미지

    이미지

    이미지

    주: MongoDB 호환성을 위해 네트워크 액세스는 허용된 IP 및 VCN에서만 보안 액세스 또는 프라이빗 끝점 액세스로만 설정되어야 합니다.

  2. 도구 구성 편집을 누르고, MongoDB API를 사용으로 설정하고, URL을 복사합니다.

    이미지

    이미지

    이미지

    주: 위의 접속 문자열에서 사용자 이름과 비밀번호를 변경해야 합니다.

작업 5: Oracle Autonomous JSON Database에 액세스하여 필요한 MongoDB 툴을 설치할 데이터베이스 클라이언트 시스템 생성

  1. 다음 명령을 사용하여 전자 지갑 파일을 다운로드하고 Oracle Autonomous JSON Database에 대한 접속을 구성합니다.

    cat tnsnames.Oracle
    

    이미지

    cat sqlnet.Ora
    

    이미지

    이미지

  2. 다음 명령을 사용하여 접속할 수 있도록 MongoDB 툴을 다운로드합니다.

    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
    

    이미지

  3. 다음 명령을 사용하여 경로URI(Oracle Autonomous Transaction Processing(ATP) 끝점)를 환경 변수로 설정합니다.

    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
    

    이미지

    이미지

    이미지

  4. 다음 명령을 사용하여 Oracle Autonomous JSON Database에 접속할 수 있는지 확인하십시오.

    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
    

    이미지

작업 6: OCI 오브젝트 스토리지 버킷에 덤프 업로드 및 ATP로 임포트

  1. mongoexport 명령을 사용하여 모음 덤프를 수행합니다.

    이미지

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

    이미지

  2. MongoDB 복제본 세트에서 mongoexport 명령을 사용하여 수행된 단일 데이터베이스 모음의 덤프를 업로드하려면 업로드를 누릅니다.

    이미지

  3. 객체 끝점 세부정보를 가져오려면 객체 세부정보 보기를 누릅니다.

    이미지

    이미지

  4. curl 명령을 실행하여 해당 객체의 데이터를 읽고 mongoimport 명령을 끝점을 사용하여 ATP로 읽습니다.

    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
    

    이미지

  5. 수집이 ATP 데이터베이스로 임포트되었는지 확인합니다.

    이미지

  6. 문서 수가 소스와 동일한지 상호 확인합니다.

    이미지

    테스트를 성공했습니다. 이제 소스 MongoDB 복제본 세트의 여러 데이터베이스에서 실행되는 모든 데이터를 대상 Oracle Autonomous JSON Database로 이동하고 거의 제로 다운타임 마이그레이션을 위해 OCI GoldenGate 서비스를 배포하는 것이 좋습니다.

  7. 데이터 이동을 위해 mongodump 명령을 사용하여 데이터를 일회성 로드로 소스에서 대상 데이터베이스로 복사할 수 있습니다.

    export URI="mongodb://mrep1:27017 --username admin --authenticationDatabase admin"
    mongodump --uri=$URI
    

    이미지

    이미지

  8. mongorestore 명령을 실행할 수 있는 대상 시스템으로 이 덤프를 복사합니다(작업 3에 이미 설명되어 대상 Oracle Autonomous JSON Database로 로드됨).

    주: 이전할 데이터베이스 모음에 대해 Oracle Autonomous JSON Database에 동일한 스키마 이름을 생성해야 합니다.

    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;
    /
    

작업 7: OCI 배치 GoldenGate

  1. OCI 콘솔로 이동하여 Oracle Database, GoldenGate, 배포로 이동하고 배포 생성을 누릅니다.

    Oracle Autonomous JSON Database에 대한 MongoDB의 경우 기술빅데이터로, 배포 유형데이터 복제로 선택해야 합니다.

    이미지

    이미지

  2. 관리 사용자 로그인 및 관리를 위해 OCI 콘솔에서 미리 암호를 생성합니다.

    이미지

    이미지

    이미지

작업 8: MongoDB 및 Oracle Autonomous JSON Database에 대한 접속 생성

  1. OCI 콘솔로 이동하여 Oracle Database, GoldenGate, 접속으로 이동하고 접속 생성을 누릅니다.

    이미지

  2. 원본 데이터베이스 연결을 생성하려면 이미지에 표시된 대로 다음 정보를 입력합니다.

    이미지

  3. 1단계를 반복하고 이미지에 표시된 대로 다음 정보를 입력하여 Target Database 연결을 생성합니다.

    이미지

작업 9: OCI GoldenGate 배치에 접속 지정 및 테스트

  1. OCI 콘솔로 이동하여 Oracle Database, GoldenGate, 접속으로 이동하고 작업 8에서 생성된 접속을 누릅니다.

  2. 지정된 배치배포 지정을 누릅니다.

    이미지

  3. 배치를 선택하고 배포 지정을 누릅니다.

    이미지

  4. 세 개의 점과 접속 테스트를 눌러 성공했는지 확인합니다.

    이미지

    이미지

작업 10: 추출 및 복제 프로세스 생성

  1. OCI 콘솔로 이동하여 Oracle Database, GoldenGate, Deployments로 이동하고 작업 7에서 생성된 배치를 누릅니다.

    콘솔 실행을 누르면 OCI GoldenGate 구성 콘솔이 열립니다.

    이미지

  2. 배치 중 생성된 사용자 이름비밀번호를 입력합니다.

    이미지

    콘솔 페이지에 로그인한 후에는 추출Replicat 구성에 필요한 모든 옵션을 볼 수 있습니다. 다음 단계에 표시된 대로 추출 및 복제 서비스를 생성할 수 있습니다.

  3. 추출 프로세스를 구성합니다.

    소스 MongoDB 데이터베이스에 대해 생성된 접속 별칭을 선택합니다.

    이미지

    이미지

    매개변수 파일에서 sample_airbnb은 MongoDB의 데이터베이스이고 *는 해당 데이터베이스의 모든 모음을 나타냅니다.

    이미지

  4. 복제 프로세스를 구성합니다.

    1. Classic ReplicatReplicat Type으로 선택합니다.

      이미지

    2. 다음 필수 정보를 입력합니다.

      추출 프로세스 생성 시 이름이 지정된 동일한 추적 파일 이름을 선택해야 합니다. 대상Oracle Autonomous JSON Database로 선택하고 작업 8에서 생성된 접속 별칭을 입력합니다.

      이미지

      Replicat 프로세스는 MongoDB의 sample_airbnb 데이터베이스에서 Oracle Autonomous JSON Database의 sample_airbnb 스키마로 모든 트랜잭션을 복제합니다.

      이미지

    주: 구성에서 소스 및 대상 데이터베이스 이름과 스키마 이름을 각각 변경해야 합니다.

  5. 추출 및 복제 프로세스 구성이 완료되면 그에 따라 프로세스를 시작합니다.

    주: Oracle Autonomous JSON Database는 프라이빗 끝점으로 구성해야 합니다. 인증서가 사용되지 않는 경우 mTLS(상호 TLS) 없이 인증을 변경할 수 있습니다.

    올바른 인증을 사용할 수 없는 경우 복제 로그 파일에 다음 오류가 표시될 수 있습니다.

    Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    

    이미지

작업 11: 추출 및 복제 프로세스 시작 및 검증

관리 서비스를 눌러 프로세스 상태와 해당 보고서 및 로그 파일에서 문제가 있는지 확인합니다.

이미지

작업 12: 테스트 데이터 동기화

  1. 소스 및 대상에서 다음 명령을 사용하여 일부 데이터를 삽입하기 전에 모음 세부정보에서 문서 수를 확인하십시오.

    • 소스 데이터베이스:

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

      이미지

    • 대상 데이터베이스:

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

      이미지

  2. 다음 명령을 사용하여 소스 및 대상 데이터베이스의 데이터를 확인합니다.

    • 소스 데이터베이스:

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

      이미지

    • 대상 데이터베이스:

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

      이미지

  3. 소스에 데이터를 삽입하고 다음 명령을 사용하여 대상으로 복제되었는지 확인합니다.

    • 소스 데이터베이스:

      dm.emp.insertOne(
      { "name":"John","job":"Data Analyst","Salary":7000})
      db.emp.countDocuments()
      db.emp.find({"name":"John"})
      

      이미지

    • 대상 데이터베이스:

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

      이미지

      이미지

      이미지

작업 13: MongoDB Atlas에 연결

MongoDB Atlas에 연결하는 것은 온프레미스 MongoDB 데이터베이스에 연결하는 것과 다릅니다.

참고: NAT 게이트웨이를 생성하고, 퍼블릭 네트워크에서 접속을 설정해야 하는 경우에도 OCI GoldenGate 배치에서 사용 중인 프라이빗 서브넷에 연결해야 합니다.

이미지

연결 문제로 인한 일반적인 오류

대상 Oracle Autonomous JSON Database에 대한 접속 문제로 인해 복제 프로세스를 시작하는 중 기타 오류가 발생할 수 있습니다.

확인

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.