주:
- 이 자습서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 완료했으면 이러한 값을 자신의 클라우드 환경과 관련된 값으로 대체하십시오.
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 과제:
-
MongoDB 빠르게 시작할 수 있지만 엔터프라이즈 배포를 위한 주요 기능이 없습니다.
-
제한된 트랜잭션 지원은 데이터 일관성 문제를 야기합니다.
-
어렵고 비효율적인 분석 Query(및 Parallel Query 없음)
-
Immature Security 기능
-
ANSI SQL(American National Standards Institute Structured Query Language) 기능입니다.
Oracle에서 JSON 데이터 유형을 사용하는 이점:
-
Oracle 버전 21c에서 JSON은 기본 형식으로 저장되므로 사용자는 표준 SQL을 사용하여 JSON 문서를 쿼리할 수 있습니다. 표준 SQL을 사용하면 Oracle Database가 지원하는 모든 기능으로 복제, 파티셔닝, 인덱싱과 같은 Oracle Database의 모든 기능을 갖춘 스키마리스 설계 모델의 유연성을 갖춘 애플리케이션을 구축할 수 있습니다.
-
JSON은 SQL 쿼리를 통해 조작할 수 있습니다.
-
OSON(JSON의 최적화된 고유 이진 표현)으로 저장됩니다.
참고: Oracle Cloud Infrastructure(OCI) GoldenGate Big Data 배치, 소스 및 대상 데이터베이스 간에 접속이 설정되었는지 확인하십시오.
목표
- OCI GoldenGate Big Data 배치를 사용하여 MongoDB 및 Oracle Autonomous JSON Database를 설정합니다.
필요 조건
-
다음 리소스를 프로비전합니다.
-
구획, VCN(가상 클라우드 네트워크), 서브넷 등과 같은 OCI 환경입니다.
-
Oracle Autonomous JSON Database.
-
MongoDB 복제본 집합용 OCI 컴퓨트 VM입니다.
-
OCI GoldenGate 빅데이터 배포.
-
작업 1: MongoDB 이진 설치 및 MongoDB 서비스 시작
-
복제 설정을 위한 3개의 OCI 컴퓨트 인스턴스를 생성하고 데이터 디렉토리에 대한 블록 볼륨을 연결합니다.
-
다음 명령을 사용하여
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
-
다음 명령을 사용하여 데이터 디렉토리를 생성하고 필요한 권한을 부여합니다.
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
명령을 사용하여 키 파일을 생성할 수 있습니다. -
다음 명령을 사용하여 구성 파일을 만듭니다.
cat /etc/mongod.conf
-
selinux
를 사용 안함으로 설정하고 다음 명령을 사용하여mongod
서비스를 시작합니다.setenforce 0 getenforce systemctl start mongod systemctl status mongod
-
보조 노드로 작동할 나머지 두 노드에서 동일한 작업을 수행합니다.
작업 2: MongoDB 복제본 세트 만들기
-
첫번째 노드에 접속하고 관리 데이터베이스에 접속합니다.
-
다음 명령을 실행하여 복제를 시작하고 첫번째 관리 사용자를 만듭니다. 이 복제 사용자는 복제 구성 및 관리에 사용됩니다.
mongosh use admin
rs.initiate() db.createUser({ ... user: "admin", ... pwd: "password", ... roles: [ ... { role: "root", db: "admin" } ... ] ... })
db.auth("admin","password") rs.conf()
-
다음 명령을 사용하여 나머지 두 노드를 추가합니다. 보조 노드로 추가됩니다.
rs.add("10.0.1.163;27017")
rs.add("10.0.1.51:27017")
-
다음 명령을 사용하여 복제본 세트의 구성 및 상태를 확인합니다.
db.auth("admin","password") rs.conf()
rs.status()
rs.printReplicationInfo()
작업 3: MongoDB 복제본 세트로 데이터 로드
-
mongorestore
명령을 사용하여 덤프를 MongoDB 복제본 세트로 복원합니다.mongorestore --username admin --password password dump/
주: 위의 덤프는 해당 복제본 세트에서 실행 중인 모든 데이터베이스에 대해
mongodump
명령을 사용하여 설정된 다른 MongoDB 복제본에서 가져왔습니다. -
다음 명령을 실행하여 모든 데이터베이스 및 해당 모음이 MongoDB 복제본 세트로 복원되었는지 확인합니다.
mongosh use admin db.auth("admin","password") show dbs
작업 4: OCI에서 Oracle Autonomous JSON Database 구성
-
OCI 콘솔에 로그인하여 Oracle Database, Autonomous Database로 이동하고 이미지에 표시된 대로 다음 정보를 입력하여 자율운영 데이터베이스를 생성합니다.
주: MongoDB 호환성을 위해 네트워크 액세스는 허용된 IP 및 VCN에서만 보안 액세스 또는 프라이빗 끝점 액세스로만 설정되어야 합니다.
-
도구 구성 편집을 누르고, MongoDB API를 사용으로 설정하고, URL을 복사합니다.
주: 위의 접속 문자열에서 사용자 이름과 비밀번호를 변경해야 합니다.
작업 5: Oracle Autonomous JSON Database에 액세스하여 필요한 MongoDB 툴을 설치할 데이터베이스 클라이언트 시스템 생성
-
다음 명령을 사용하여 전자 지갑 파일을 다운로드하고 Oracle Autonomous JSON Database에 대한 접속을 구성합니다.
cat tnsnames.Oracle
cat sqlnet.Ora
-
다음 명령을 사용하여 접속할 수 있도록 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
-
다음 명령을 사용하여 경로 및 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
-
다음 명령을 사용하여 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로 임포트
-
mongoexport
명령을 사용하여 모음 덤프를 수행합니다.mongoexport --host=mrep1 --port 27017 --username=admin --authicationDatabase=admin --collection=data --db=sample_weatherdata --out=wheather_data.Json
-
MongoDB 복제본 세트에서
mongoexport
명령을 사용하여 수행된 단일 데이터베이스 모음의 덤프를 업로드하려면 업로드를 누릅니다. -
객체 끝점 세부정보를 가져오려면 객체 세부정보 보기를 누릅니다.
-
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
-
수집이 ATP 데이터베이스로 임포트되었는지 확인합니다.
-
문서 수가 소스와 동일한지 상호 확인합니다.
테스트를 성공했습니다. 이제 소스 MongoDB 복제본 세트의 여러 데이터베이스에서 실행되는 모든 데이터를 대상 Oracle Autonomous JSON Database로 이동하고 거의 제로 다운타임 마이그레이션을 위해 OCI GoldenGate 서비스를 배포하는 것이 좋습니다.
-
데이터 이동을 위해
mongodump
명령을 사용하여 데이터를 일회성 로드로 소스에서 대상 데이터베이스로 복사할 수 있습니다.export URI="mongodb://mrep1:27017 --username admin --authenticationDatabase admin" mongodump --uri=$URI
-
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
-
OCI 콘솔로 이동하여 Oracle Database, GoldenGate, 배포로 이동하고 배포 생성을 누릅니다.
Oracle Autonomous JSON Database에 대한 MongoDB의 경우 기술을 빅데이터로, 배포 유형을 데이터 복제로 선택해야 합니다.
-
관리 사용자 로그인 및 관리를 위해 OCI 콘솔에서 미리 암호를 생성합니다.
작업 8: MongoDB 및 Oracle Autonomous JSON Database에 대한 접속 생성
-
OCI 콘솔로 이동하여 Oracle Database, GoldenGate, 접속으로 이동하고 접속 생성을 누릅니다.
-
원본 데이터베이스 연결을 생성하려면 이미지에 표시된 대로 다음 정보를 입력합니다.
-
1단계를 반복하고 이미지에 표시된 대로 다음 정보를 입력하여 Target Database 연결을 생성합니다.
작업 9: OCI GoldenGate 배치에 접속 지정 및 테스트
-
OCI 콘솔로 이동하여 Oracle Database, GoldenGate, 접속으로 이동하고 작업 8에서 생성된 접속을 누릅니다.
-
지정된 배치 및 배포 지정을 누릅니다.
-
배치를 선택하고 배포 지정을 누릅니다.
-
세 개의 점과 접속 테스트를 눌러 성공했는지 확인합니다.
작업 10: 추출 및 복제 프로세스 생성
-
OCI 콘솔로 이동하여 Oracle Database, GoldenGate, Deployments로 이동하고 작업 7에서 생성된 배치를 누릅니다.
콘솔 실행을 누르면 OCI GoldenGate 구성 콘솔이 열립니다.
-
배치 중 생성된 사용자 이름 및 비밀번호를 입력합니다.
콘솔 페이지에 로그인한 후에는 추출 및 Replicat 구성에 필요한 모든 옵션을 볼 수 있습니다. 다음 단계에 표시된 대로 추출 및 복제 서비스를 생성할 수 있습니다.
-
추출 프로세스를 구성합니다.
소스 MongoDB 데이터베이스에 대해 생성된 접속 별칭을 선택합니다.
매개변수 파일에서
sample_airbnb
은 MongoDB의 데이터베이스이고*
는 해당 데이터베이스의 모든 모음을 나타냅니다. -
복제 프로세스를 구성합니다.
-
Classic Replicat를 Replicat Type으로 선택합니다.
-
다음 필수 정보를 입력합니다.
추출 프로세스 생성 시 이름이 지정된 동일한 추적 파일 이름을 선택해야 합니다. 대상을 Oracle Autonomous JSON Database로 선택하고 작업 8에서 생성된 접속 별칭을 입력합니다.
Replicat 프로세스는 MongoDB의
sample_airbnb
데이터베이스에서 Oracle Autonomous JSON Database의sample_airbnb
스키마로 모든 트랜잭션을 복제합니다.
주: 구성에서 소스 및 대상 데이터베이스 이름과 스키마 이름을 각각 변경해야 합니다.
-
-
추출 및 복제 프로세스 구성이 완료되면 그에 따라 프로세스를 시작합니다.
주: 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: 추출 및 복제 프로세스 시작 및 검증
관리 서비스를 눌러 프로세스 상태와 해당 보고서 및 로그 파일에서 문제가 있는지 확인합니다.
-
추출 프로세스 상태:
-
Replicat 프로세스 상태:
작업 12: 테스트 데이터 동기화
-
소스 및 대상에서 다음 명령을 사용하여 일부 데이터를 삽입하기 전에 모음 세부정보에서 문서 수를 확인하십시오.
-
소스 데이터베이스:
show dbs use sample_airbnb show collections db.emp.countDocuments()
-
대상 데이터베이스:
show dbs use Sample_airbnb show collections db.emp.countDocuments()
-
-
다음 명령을 사용하여 소스 및 대상 데이터베이스의 데이터를 확인합니다.
-
소스 데이터베이스:
db.emp.find({"name":"joe"}) db.emp.find({"name":"John"})
-
대상 데이터베이스:
db.emp.find({"name":"joe"}) db.emp.find({"name":"John"})
-
-
소스에 데이터를 삽입하고 다음 명령을 사용하여 대상으로 복제되었는지 확인합니다.
-
소스 데이터베이스:
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 데이터베이스에 연결하는 것과 다릅니다.
-
다음 MongoDB Atlas 기본 접속 문자열은 지원되지 않습니다.
mongodb+srv://<db_username>:<db_password>@cluster0.xxxxx.mongodb.net/
-
연결에 성공하려면 다음 연결 문자열을 사용해야 합니다.
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
참고: NAT 게이트웨이를 생성하고, 퍼블릭 네트워크에서 접속을 설정해야 하는 경우에도 OCI GoldenGate 배치에서 사용 중인 프라이빗 서브넷에 연결해야 합니다.
연결 문제로 인한 일반적인 오류
대상 Oracle Autonomous JSON Database에 대한 접속 문제로 인해 복제 프로세스를 시작하는 중 기타 오류가 발생할 수 있습니다.
-
오류 1:
ERROR OGG-01091 Unable to open file "/u02/Deployment/var/lib/data/a1000000000" (error 2, No such file or directory).
-
오류 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
-
오류 3: 통합 복제의 경우 다음 오류가 발생할 수 있습니다.
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
-
오류 4: 기본 접속 문자열을 사용하는 MongoDB Atlas의 접속은 OCI GoldenGate Big Data 배치에서 지원되지 않습니다. 다음 그림과 같이 오류가 표시됩니다.
관련 링크
확인
- 작성자 - Ashish Srivastava(Oracle North America Cloud Services - NACIE 수석 클라우드 아키텍트)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Migrate a MongoDB Database Running on MongoDB Atlas or On-Premises to Oracle Autonomous JSON Database
G26112-01
February 2025
Copyright ©2025, Oracle and/or its affiliates.