기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon DocumentDB 마이그레이션 실행서
이 실행서는 AWS Database Migration Service (DMS)를 사용하여 MongoDB 데이터베이스를 Amazon DocumentDB로 마이그레이션하기 위한 포괄적인 가이드를 제공합니다. 초기 검색부터 마이그레이션 후 검증까지 end-to-end 마이그레이션 여정 전반에 걸쳐 데이터베이스 관리자, 클라우드 엔지니어 및 개발자를 지원하도록 설계되었습니다.
MongoDB와 Amazon DocumentDB 간의 구현 및 지원되는 기능의 차이를 고려하여이 실행서는 체계적이고 체계적인 접근 방식을 강조합니다. 필수 마이그레이션 전 평가를 간략하게 설명하고, 호환성 고려 사항을 강조하고, 중단을 최소화하면서 성공적인 마이그레이션을 보장하는 데 필요한 주요 작업을 자세히 설명합니다.
실행서는 다음 주제로 구성됩니다.
호환성 - Amazon DocumentDB에서 지원되는 MongoDB 기능 및 데이터 유형을 이해하고 잠재적 비호환성을 식별합니다.
워크로드 검색 - 읽기/쓰기 패턴, 데이터 볼륨, 성능 기준을 포함한 기존 MongoDB 워크로드를 분석합니다.
인덱스 마이그레이션 - Amazon DocumentDB에서 최적의 성능을 위해 MongoDB 인덱스를 추출하고 변환하기 위한 전략을 분석합니다.
사용자 마이그레이션 - 데이터베이스 사용자, 역할 및 액세스 제어를 Amazon DocumentDB로 마이그레이션하는 방법을 자세히 설명합니다.
데이터 마이그레이션 - 전체 로드 및 변경 데이터 캡처(CDC) AWS DMS를 포함하여를 사용한 데이터 마이그레이션을 위한 다양한 방법을 다룹니다.
모니터링 - DMS 또는 기본 도구를 사용하여 마이그레이션할 때 다양한 모니터링 접근 방식을 자세히 설명합니다.
검증 - 마이그레이션 후 데이터 무결성 검사, 기능 검증 및 성능 비교 절차를 제공합니다.
이 실행서의 지침에 따라 팀은 애플리케이션 기능을 보존하고 위험을 최소화하면서 Amazon DocumentDB로 원활하고 안전하며 효율적으로 전환할 수 있습니다.
호환성
MongoDB에서 Amazon DocumentDB로 마이그레이션할 때는 성공적인 마이그레이션을 위해 철저한 초기 평가 및 기능 호환성 검사가 필수적입니다. 이 프로세스는 집계 파이프라인 연산자, 쿼리 패턴, 인덱스 및 데이터 모델을 포함한 MongoDB 기능의 포괄적인 인벤토리로 시작됩니다.
Amazon DocumentDB는 MongoDB 3.6, 4.0 및 5.0 API와 호환되므로 최신 MongoDB 전용 기능을 사용하는 애플리케이션에는 리팩터링이 필요할 수 있습니다. 평가할 중요한 영역에는 샤딩 메커니즘(Amazon DocumentDB는 다른 접근 방식을 사용), 트랜잭션 구현, 변경 스트림 기능 및 인덱스 유형(특히 희소 인덱스와 부분 인덱스)이 포함됩니다.
성능 특성도 다릅니다. Amazon DocumentDB는 예측 가능한 성능을 갖춘 엔터프라이즈 워크로드에 최적화되어 있습니다. 테스트에는 최적화가 필요할 수 있는 쿼리 패턴을 식별하기 위해 두 시스템에 대해 대표적인 워크로드를 실행하는 작업이 포함되어야 합니다.
평가 단계에서는 실행 계획을 모니터링하여 잠재적 성능 격차를 감지하는 것이 중요합니다. 이를 통해 명확한 마이그레이션 로드맵을 생성하여 필요한 애플리케이션 변경 사항을 식별하고 원활한 전환을 위한 현실적인 일정을 수립할 수 있습니다.
핵심 기능 호환성
포괄적인 기능 지원
CRUD 작업 - 대량 및 쿼리 연산자를 포함한 모든 기본 생성, 읽기, 업데이트 및 삭제 작업을 완벽하게 지원하여 원활한 애플리케이션 호환성을 제공합니다.
풍부한 인덱싱 기능 - 단일 필드, 복합, TTL, 부분, 희소 및 2Dsphere 인덱스에 대한 포괄적인 지원을 활용하여 텍스트 기반 조회를 위한 쿼리 성능 및 텍스트 인덱스(버전 5)를 최적화합니다.
엔터프라이즈급 복제 - 운영 오버헤드 없이 뛰어난 고가용성을 위해 읽기 전용 복제본이 포함된 강력한 자동 장애 조치 메커니즘의 이점을 누릴 수 있습니다.
고급 백업 솔루션 - 데이터 보호를 위한 Point-in-Time 복구(PITR) 및 온디맨드 수동 스냅샷을 갖춘 자동 백업 시스템으로 편히 쉬세요.
향상된 AWS통합 기능
간소화된 집계 - 엔터프라이즈 워크로드에 최적화된 성능으로 가장 일반적으로 사용되는 집계 단계(
$match
,$group
$sort
,$project
, 등)를 활용합니다.트랜잭션 지원 - 대부분의 비즈니스 애플리케이션 요구 사항에 적합한 다중 문서 및 다중 컬렉션 트랜잭션을 구현합니다.
실시간 데이터 추적 - 간단한 명령으로 변경 스트림을 활성화하고 실시간 데이터 변경 모니터링을 위한 간단한 파라미터 그룹 설정을 통해 변경 스트림 보존 기간을 늘립니다.
위치 기반 서비스 -
$geoNear
연산자 및 2Dsphere 인덱스를 지원하는 지리 공간 애플리케이션을 구현합니다.텍스트 검색 기능 - 콘텐츠 검색 요구 사항에 맞는 기본 제공 텍스트 검색 기능을 활용합니다.
최신 아키텍처의 장점
클라우드 네이티브 설계 - MapReduce와 같은 레거시 기능을 보다 효율적인 집계 파이프라인 작업으로 대체하는 매력적인 AWS최적화 아키텍처입니다.
보안 강화 - AWS Identity and Access Management (IAM), SCRAM-SHA-1, SCRAM-SHA-256, X.509 인증서 인증 및 암호 기반 인증의 이점.
예측 가능한 성능 - 엔터프라이즈 워크로드에 특별히 최적화된 일관된 성능을 경험할 수 있습니다.
Amazon DocumentDB의 기능에 대한 포괄적인 개요는 Amazon DocumentDB에서 지원되는 MongoDB API, 작업 및 데이터 형식 및를 참조하여 데이터베이스의 잠재력을 기능적 차이: Amazon DocumentDB 및 MongoDB 극대화하세요.
Amazon DocumentDB는 MongoDB에서 제공하는 모든 인덱스를 지원하지 않습니다. 호환성을 확인할 수 있는 무료 인덱스 도구를
Amazon DocumentDB 호환성 평가 도구
MongoDB에서 Amazon DocumentDB로의 호환성 도구는
주요 기능
워크로드에서 MongoDB API 사용 패턴 식별
마이그레이션 전에 잠재적 호환성 문제에 플래그를 지정합니다.
권장 사항과 함께 자세한 호환성 보고서를 생성합니다.
로컬에서 실행할 수 있는 독립 실행형 유틸리티로 사용 가능
평가 방법
로그 기반 평가
장점:
실제 런타임 동작 및 쿼리 패턴 캡처
실제 사용 빈도 및 성능 특성 식별
소스 코드에 표시되지 않을 수 있는 동적 쿼리를 감지합니다.
애플리케이션 소스 코드에 액세스할 필요 없음
단점:
프로파일링이 활성화된 MongoDB 로그에 대한 액세스가 필요합니다.
로깅 기간 동안 발생한 작업만 캡처합니다.
자주 사용하지 않는 기능 또는 계절별 워크로드를 놓칠 수 있음
소스 코드 분석
장점:
코드베이스의 모든 잠재적 MongoDB 작업에 대한 포괄적인 적용 범위
드물게 실행되는 코드 경로의 문제를 식별할 수 있습니다.
Amazon DocumentDB 차이의 영향을 받을 수 있는 클라이언트 측 로직을 감지합니다.
평가를 수행하기 위해 애플리케이션을 실행할 필요가 없습니다.
단점:
프로덕션 환경에서는 존재하지만 실행되지 않는 코드에 플래그를 지정할 수 있습니다.
애플리케이션 소스 코드를 완료하려면 액세스 권한이 필요합니다.
동적으로 구성된 쿼리를 분석할 수 있는 제한된 기능
최상의 결과를 얻으려면 마이그레이션 전에 호환성 문제를 전체적으로 파악할 수 있도록 가능하면 두 평가 방법을 모두 사용하는 것이 좋습니다.
워크로드 검색
MongoDB에서 Amazon DocumentDB로 마이그레이션하려면 기존 데이터베이스 워크로드를 철저히 이해해야 합니다. 워크로드 검색은 데이터베이스 사용 패턴, 데이터 구조, 쿼리 성능 및 운영 종속성을 분석하여 중단을 최소화하면서 원활한 전환을 보장하는 프로세스입니다. 이 섹션에서는 MongoDB에서 Amazon DocumentDB로 효과적으로 마이그레이션할 수 있도록 워크로드 검색과 관련된 주요 단계를 간략하게 설명합니다.
기존 MongoDB 배포 평가
마이그레이션하기 전에 다음을 포함하여 현재 MongoDB 환경을 평가하는 것이 중요합니다.
클러스터 아키텍처 - 노드 수, 복제본 세트 및 샤딩 구성을 식별합니다. MongoDB에서 Amazon DocumentDB로 마이그레이션할 때는 Amazon DocumentDB가 사용자 제어 샤딩을 지원하지 않으므로 MongoDB 샤딩 구성을 이해하는 것이 중요합니다. Amazon DocumentDB는 스토리지 기반 아키텍처와 다른 조정 접근 방식을 사용하므로 샤딩된 MongoDB 환경을 위해 설계된 애플리케이션은 아키텍처 변경이 필요합니다. Amazon DocumentDB로 이동할 때 데이터 배포 전략을 조정하고 샤딩된 컬렉션을 통합해야 할 수 있습니다.
스토리지 및 데이터 볼륨 - 클러스터의 총 데이터 크기와 인덱스 크기를 측정합니다. Oplog 검토 도구를
사용하여 이를 보완하여 쓰기 패턴과 데이터 증가 속도를 이해합니다. 클러스터 크기 조정에 대한 자세한 내용은 섹션을 참조하세요인스턴스 크기 조정. 워크로드 패턴 - 읽기 및 쓰기 처리량, 쿼리 실행 빈도 및 인덱싱 효율성을 분석합니다.
운영 종속성 - MongoDB에 의존하는 모든 애플리케이션, 서비스 및 통합을 문서화합니다.
데이터 모델 차이점 식별
Amazon DocumentDB는 MongoDB와 호환되지만 지원되는 기능에는 다음과 같은 차이점이 있습니다.
트랜잭션 - Amazon DocumentDB는 일부에서 ACID 트랜잭션을 지원합니다제한 사항.
스키마 설계 - 문서 구조, 임베디드 문서 및 참조가 Amazon DocumentDB의 모범 사례
와 일치하는지 확인합니다.
쿼리 및 성능 분석
쿼리 동작을 이해하면 마이그레이션 및 마이그레이션 후 성능을 최적화하는 데 도움이 됩니다. 분석할 주요 영역은 다음과 같습니다.
느린 쿼리 - MongoDB의 프로파일링 도구를 사용하여 실행 시간이 긴 쿼리를 식별합니다.
쿼리 패턴 - CRUD 작업 및 집계를 포함한 일반적인 쿼리 유형을 분류합니다.
인덱스 사용량 - Amazon DocumentDB에서 인덱스가 효과적으로 활용되는지 또는 최적화가 필요한지 평가합니다. Amazon DocumentDB에서 인덱스 사용량을 평가하고 성능을 최적화하려면 중요한 쿼리에서
explain()
메서드와 결합된$indexStats
집계 파이프라인 단계를 사용합니다. 를 실행db.collection.aggregate([{$indexStats{}}])
하여 사용 중인 인덱스를 식별합니다. 를 사용하여 가장 빈번한 쿼리를 실행하여 더 자세한 분석을 수행할 수 있습니다explainPlan
.동시성 및 워크로드 배포 - 읽기 및 쓰기 비율, 연결 풀링 및 성능 병목 현상을 평가합니다.
보안 및 액세스 제어 검토
인증 및 권한 부여
MongoDB RBAC를 Amazon DocumentDB IAM 및 RBAC로 - MongoDB의 역할 기반 액세스 제어 사용자 및 역할을 AWS Identity and Access Management (IAM) 정책 및 Amazon DocumentDB SCRAM 인증 사용자에게 매핑합니다.
사용자 마이그레이션 전략 - 데이터베이스 사용자, 사용자 지정 역할 및 권한을 Amazon DocumentDB의 지원되는 인증 메커니즘으로 마이그레이션할 계획을 세웁니다.
권한 차이 - 직접 Amazon DocumentDB에 상응하는 권한(예: 클러스터 관리 역할)이 없는 MongoDB 권한을 식별합니다. Amazon DocumentDB
애플리케이션 인증 - Amazon DocumentDB의 암호 정책에 대한 연결 문자열 및 자격 증명 관리를 업데이트합니다. 보안 암호 관리자를 사용하여 자격 증명을 저장하고 암호를 교체할 수 있습니다.
서비스 계정 관리 -에서 서비스 계정 자격 증명을 관리하기 위한 프로세스를 설정합니다 AWS Secrets Manager.
최소 권한 구현 - 액세스 제어를 검토하고 구체화하여 새 환경에서 최소 권한 원칙을 구현합니다.
암호화(Encryption)
저장 및 전송 중 암호화가 규정 준수 요구 사항에 부합하는지 확인합니다.
네트워크 구성
Virtual Private Cloud(VPC) 설정 및 보안 그룹 규칙을 계획합니다.
운영 및 모니터링 고려 사항
시스템 신뢰성을 유지하기 위해 워크로드 검색에는 다음이 포함되어야 합니다.
백업 및 복원 전략 - 기존 백업 방법과 Amazon DocumentDB의 백업 기능을 평가합니다.
AWS Backup 통합 - Amazon DocumentDB AWS Backup 를 포함한 AWS 여러 서비스에서 중앙 집중식 백업 관리를 위해를 활용합니다.
CloudWatch 지표 - MongoDB 모니터링 지표를 CPU, 메모리, 연결 및 스토리지에 대한 Amazon DocumentDB CloudWatch 지표에 매핑합니다.
성능 개선 도우미 - Amazon DocumentDB 성능 개선 도우미를 구현하여 데이터베이스 로드를 시각화하고 자세한 쿼리 분석을 통해 성능 문제를 분석합니다.
프로파일러 - 느린 실행 작업을 캡처하도록 Amazon DocumentDB 프로파일러를 구성합니다(MongoDB의 프로파일러와 비슷하지만 Amazon DocumentDB별 설정 사용).
적절한 임계값이 있는 파라미터 그룹을 통해를 활성화합니다.
프로파일러 데이터를 분석하여 최적화 기회 식별
CloudWatch Events - Amazon DocumentDB 클러스터 이벤트에 대한 이벤트 기반 모니터링을 설정합니다.
백업 이벤트, 유지 관리 기간 및 장애 조치에 대한 알림을 구성합니다.
알림 및 AWS Lambda 자동 응답을 위해 Amazon SNS와 통합합니다.
감사 로깅 - 사용자 활동 및 보안 관련 이벤트를 추적하기 위한 감사 로깅 구성을 계획합니다.
향상된 모니터링 - 1초 간격으로 세분화된 OS 수준 지표에 대한 향상된 모니터링을 활성화합니다.
인덱스 마이그레이션
MongoDB에서 Amazon DocumentDB로 마이그레이션하려면 데이터뿐만 아니라 인덱스를 전송하여 쿼리 성능을 유지하고 데이터베이스 작업을 최적화해야 합니다. 이 섹션에서는 호환성과 효율성을 보장하면서 MongoDB에서 Amazon DocumentDB로 인덱스를 마이그레이션하는 step-by-step 프로세스를 간략하게 설명합니다.
Amazon DocumentDB 인덱스 도구 사용
인덱스 도구
git clone https://github.com/aws-samples/amazon-documentdb-tools.git cd amazon-documentdb-tools/index-tool
pip install -r requirements.txt
MongoDB에서 인덱스 내보내기(MongoDB에서 마이그레이션하는 경우)
python3 migrationtools/documentdb_index_tool.py --dump-indexes --dir mongodb_index_export --uri 'mongodb://localhost:27017'
Amazon DocumentDB에서 인덱스 내보내기(Amazon DocumentDB에서 마이그레이션하는 경우)
python3 migrationtools/documentdb_index_tool.py --dump-indexes --dir docdb_index_export --uri 'mongodb://user:password@mydocdb.cluster-cdtjj00yfi95.eu-west- 2.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=rds-combined-ca- bundle.pem&replicaSet=rs0&retryWrites=false'
인덱스 가져오기
python3 migrationtools/documentdb_index_tool.py --restore-indexes --skip-incompatible --dir mongodb_index_export --uri 'mongodb://user:password@mydocdb.cluster-cdtjj00yfi95.eu-west- 2.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=rds-combined-ca- bundle.pem&replicaSet=rs0&retryWrites=false'
인덱스 확인
python3 migrationtools/documentdb_index_tool.py --show-issues --dir mongodb_index_export
사용자 마이그레이션
MongoDB에서 Amazon DocumentDB로 사용자를 마이그레이션하는 것은 액세스 제어, 인증 및 데이터베이스 보안을 유지하는 데 필수적입니다. 이 섹션에서는 Amazon DocumentDB 사용자 내보내기 도구를 사용하여 역할과 권한을 유지하면서 MongoDB 사용자를 성공적으로 마이그레이션하는 자세한 단계를 간략하게 설명합니다.
Amazon DocumentDB 사용자 내보내기 도구 사용
는 사용자와 역할을 MongoDB 또는 Amazon DocumentDB에서 JavaScript 파일로 Export Users tool
사전 조건
# Clone the repository git clone https://github.com/awslabs/amazon-documentdb-tools.git cd amazon-documentdb-tools/migration/export-users
# Install required dependencies pip install pymongo
1단계: 사용자 및 역할 내보내기
# Export users and roles to JavaScript files python3 docdbExportUsers.py \ --users-file mongodb-users.js \ --roles-file mongodb-roles.js \ --uri "mongodb://admin:password@source-host:27017/"
2단계: 사용자 파일 편집
// Example of how to update the users.js file // Find each user creation statement and add the password db.getSiblingDB("admin").createUser({ user: "appuser", // Add password here pwd: "newpassword", roles: [ { role: "readWrite", db: "mydb" } ] })
3단계: Amazon DocumentDB에 사용자 지정 역할 복원
# Import roles first mongo --ssl \ --host target-host:27017 \ --sslCAFile rds-combined-ca-bundle.pem \ --username admin \ --password password \ mongodb-roles.js
4단계: Amazon DocumentDB에 사용자 복원
# Import users after roles are created mongo --ssl \ --host target-host:27017 \ --sslCAFile rds-combined-ca-bundle.pem \ --username admin \ --password password \ mongodb-users.js
중요 참고 사항
보안상의 이유로 암호를 내보내지 않으며 users.js 파일에 수동으로 추가해야 합니다.
적절한 역할 할당을 보장하려면 사용자보다 먼저 역할을 가져와야 합니다.
이 도구는 mongo 셸로 직접 실행할 수 있는 JavaScript 파일을 생성합니다.
사용자 지정 역할과 해당 권한은 마이그레이션 중에 유지됩니다.
이 접근 방식을 사용하면 가져오기 전에 사용자 권한을 검토하고 수정할 수 있습니다.
이 방법은 마이그레이션 프로세스 중에 암호 재설정을 허용하면서 MongoDB에서 Amazon DocumentDB로 사용자 및 역할을 마이그레이션하는 안전하고 유연한 접근 방식을 제공합니다.
데이터 마이그레이션
주제
온라인 마이그레이션
이 섹션에서는 가동 중지 시간을 최소화하고 연속 복제를 위해를 사용하여 MongoDB에서 Amazon DocumentDB로 온라인 마이그레이션 AWS DMS 을 수행하는 자세한 단계를 제공합니다. 시작하려면 Amazon DocumentDB 클러스터를 대상으로 설정하고 MongoDB 인스턴스가 소스로 올바르게 구성되어 있는지 확인합니다. 일반적으로 변경 데이터 캡처를 위해 복제본 세트 모드가 필요합니다. 그런 다음 DMS 복제 인스턴스를 생성하고 필요한 연결 세부 정보로 소스 및 대상 엔드포인트를 정의합니다. 엔드포인트를 검증한 후 전체 데이터 로드, 지속적 복제 또는 둘 다를 포함할 수 있는 마이그레이션 작업을 구성하고 시작합니다.
대상 구성(Amazon DocumentDB)
참고
마이그레이션할 Amazon DocumentDB 클러스터를 이미 프로비저닝한 경우이 단계를 건너뛸 수 있습니다.
사용자 지정 파라미터 그룹 생성
의 AWS Management Console 또는 AWS CLI 절차를 참조하세요Amazon DocumentDB 클러스터 파라미터 그룹 생성.
Amazon DocumentDB 클러스터 생성
참고
이 가이드에는 Amazon DocumentDB 클러스터를 생성하는 다른 절차가 있지만이 섹션의 단계는 특히 대량의 데이터를 새 클러스터로 마이그레이션하는 작업에 적용됩니다.
에 로그인 AWS Management Console하고 https://console.aws.amazon.com/docdb
Amazon DocumentDB 콘솔을 엽니다. 탐색 창에서 클러스터를 선택합니다.
작은 정보
화면 왼쪽에 탐색 창이 표시되지 않으면 페이지 왼쪽 상단 모서리에서 메뉴 아이콘(
)을 선택합니다.
Amazon DocumentDB 관리 콘솔의 클러스터에서 생성을 선택합니다.
Amazon DocumentDB 클러스터 생성 페이지의 클러스터 유형 섹션에서 인스턴스 기반 클러스터(기본 옵션)를 선택합니다.
클러스터 구성 섹션에서 다음을 수행합니다.
클러스터 식별자 에
mydocdbcluster
와 같은 고유한 이름을 입력합니다. 콘솔은 입력 방식에 관계없이 모든 클러스터 이름을 소문자로 변경합니다.엔진 버전에서 5.0.0을 선택합니다.
클러스터 스토리지 구성 섹션에서 Amazon DocumentDB Standard 설정을 그대로 둡니다(기본 옵션).
인스턴스 구성 섹션에서:
DB 인스턴스 클래스에서 메모리 최적화 클래스(r 클래스 포함)(기본값)를 선택합니다.
인스턴스 클래스에서 워크로드를 기반으로 인스턴스 클래스를 선택합니다. 예:
db.r6g.large: 소규모 워크로드용
db.r6g.4xlarge: 대규모 워크로드용
최상의 전체 로드 처리량을 위해 가능한 한 큰 인스턴스를 선택하고 마이그레이션이 완료된 후 스케일 다운하는 것이 좋습니다.
인스턴스 수에서 인스턴스 1개를 선택합니다. 인스턴스 하나를 선택하면 비용을 최소화하는 데 도움이 됩니다. 전체 로드 마이그레이션이 완료된 후 고가용성을 위해 인스턴스 3개로 확장하는 것이 좋습니다.
인증 섹션에서 기본 사용자의 사용자 이름을 입력한 다음 자체 관리를 선택합니다. 암호를 입력한 다음 확인합니다.
네트워크 설정 섹션에서 VPC 및 서브넷 그룹을 선택한 다음 VPC 보안 그룹을 구성합니다. 인바운드 규칙을 업데이트하여 Amazon DocumentDB 보안 그룹이 DMS 인스턴스의 보안 그룹에서 인바운드 연결을 허용하는지 확인합니다.
Encryption-at-rest 섹션에서 암호화(권장)를 활성화하고 KMS 키를 선택하거나 입력합니다.
백업 섹션에서 백업 보존 기간(1~35일)을 설정합니다.
구성을 검토하고 클러스터 생성을 선택합니다.
배포 시간은 일반적으로 10~15분이 소요되며,
소스를 구성합니다.
MongoDB와 Amazon DocumentDB는 모두 시나리오에 따라 마이그레이션 소스 역할을 할 수 있습니다.
MongoDB 소스 - 온프레미스 또는 자체 관리형 MongoDB에서 Amazon DocumentDB 또는 기타 AWS 데이터베이스 서비스로 마이그레이션할 때 일반적입니다. 마이그레이션 중에 변경 데이터 캡처를 지원하려면 적절한 크기의 oplog를 사용하여 복제본 세트 모드에서를 실행해야 합니다(전체 로드 중에 모든 작업을 담을 수 있는 크기여야 함).
Amazon DocumentDB 소스 - 일반적으로 교차 리전 복제, 버전 업그레이드 또는 MongoDB Atlas와 같은 다른 데이터베이스 서비스로 마이그레이션하는 데 사용됩니다. 클러스터
change_stream_log_retention_duration
파라미터 그룹에서 파라미터를 설정변경 스트림 활성화하여 마이그레이션 중에 진행 중인 변경 사항을 캡처해야 합니다.change_stream_log_retention_duration
설정이 전체 로드를 완료하는 데 필요한 시간을 수용할 수 있을 만큼 충분히 큰지 확인합니다.
마이그레이션을 시작하기 전에 AWS DMS 액세스를 허용하도록 소스를 구성합니다.
적절한 권한을 가진 MongoDB 사용자를 생성합니다.
db.createUser({ user: "
dmsUser
", pwd: "yourSecurePassword
", roles: [{ role: "readAnyDatabase", db: "admin" }] })
네트워크 및 인증을 구성합니다.
MongoDB에서 DMS로의 마이그레이션을 위한 네트워크 연결을 구성하는 경우:
EC2-hosted MongoDB 소스
DMS 복제 인스턴스 보안 그룹의 인바운드 트래픽을 허용하도록 EC2 보안 그룹을 수정합니다.
TCP 포트 27017(또는 사용자 지정 MongoDB 포트)에 대한 규칙을 추가합니다.
DMS 복제 인스턴스의 보안 그룹 ID를 정확한 액세스 제어를 위한 소스로 사용합니다.
EC2 인스턴스의 서브넷에 DMS 복제 인스턴스의 서브넷에 대한 경로가 있는지 확인합니다.
온프레미스 MongoDB 소스
DMS 복제 인스턴스의 퍼블릭 IP 주소로부터의 인바운드 연결을 허용하도록 방화벽을 구성합니다.
AWS Direct Connect 또는 VPN을 사용하는 경우 네트워크와 DMS 인스턴스가 포함된 VPC 간의 라우팅이 적절한지 확인합니다.
DMS 서브넷에서 MongoDB 서버로의 telnet 또는 nc 명령을 사용하여 연결을 테스트합니다.
MongoDB Atlas 소스
DMS 복제 인스턴스 IP 주소를 MongoDB Atlas IP 허용 목록에 추가합니다.
Atlas가 실행 중인 경우 AWS VPC와 MongoDB Atlas VPC 간에 VPC 피어링을 구성합니다 AWS.
다른 클라우드 공급자에서 실행되는 경우 프라이빗 연결(엔터프라이즈 계층) AWS PrivateLink 을 설정합니다.
적절한 읽기/쓰기 권한을 가진 전용 사용자를 생성합니다.
SSL 모드가 "verify-full"로 설정된 MongoDB Atlas 연결 문자열을 사용합니다.
마이그레이션 기간에 충분한 oplog 크기를 확보합니다.
Amazon DocumentDB 소스
DMS 복제 인스턴스 보안 그룹의 인바운드 트래픽을 허용하도록 소스 Amazon DocumentDB 보안 그룹을 구성합니다.
DMS 복제 인스턴스 생성
최적의 DMS 설정 및 인스턴스 크기로 최적의 마이그레이션 인프라를 생성하므로 DMS Buddy
수동으로를 구성하려면 다음 단계를 따르세요.
AWS DMS 콘솔을 열고 복제 인스턴스 생성을 선택합니다.
복제 인스턴스 세부 정보를 입력합니다.
인스턴스 이름: 고유한 이름을 선택합니다.
인스턴스 클래스: 워크로드를 기반으로를 선택합니다. 예: dms.r5.large(작은 워크로드), dms.r5.4xlarge(큰 워크로드).
엔진 버전: 3.5.4
할당된 스토리지: 기본값은 100GB입니다(필요한 경우 증가). 이는 문서 크기, 업데이트/초 및 전체 로드 기간에 따라 결정됩니다.
다중 AZ 배포: 필요한 경우 고가용성을 활성화합니다.
Amazon DocumentDB와 동일한 VPC를 선택합니다.
보안 그룹이 소스 및 Amazon DocumentDB의 인바운드 트래픽을 허용하는지 확인합니다.
복제 인스턴스 생성을 클릭하고 상태를 사용할 수 있을 때까지 기다립니다.
DMS 엔드포인트 생성
소스 엔드포인트 생성
MongoDB 소스의 경우
DMS 콘솔의 탐색 창에서 마이그레이션 또는 복제를 선택한 다음 엔드포인트를 선택합니다.
Create endpoint(엔드포인트 생성)을 선택합니다.
엔드포인트 생성 페이지에서 소스 엔드포인트를 선택합니다.
엔드포인트 구성 섹션에서:
고유하고 의미 있는 엔드포인트 식별자(예: "mongodb-source")를 입력합니다.
MongoDB를 소스 엔진으로 선택합니다.
엔드포인트 데이터베이스 액세스에서 수동으로 액세스 정보 제공을 선택합니다.
서버 이름에
MongoDB 서버 DNS 이름/IP 주소를
입력합니다.포트에 27017(기본 MongoDB 포트)을 입력합니다.
인증 모드에서 애플리케이션에 적합한 모드(암호/SSL)를 선택합니다(기본값은 보안 암호 관리자).
인증 모드가 암호인 경우 다음을 제공합니다.
사용자 이름 및 암호: MongoDB 자격 증명을 입력합니다.
데이터베이스 이름: 소스 데이터베이스 이름입니다.
인증 메커니즘: SCRAM-SHA-1(기본값) 또는 적절한 메커니즘
메타데이터 모드의 경우 문서의 기본 설정을 그대로 둡니다.
추가 연결 속성:
authSource=admin(인증 데이터베이스가 다른 경우)
replicaSet=<your-replica-set-name>(CDC의 경우 필수)
Amazon DocumentDB 소스의 경우
DMS 콘솔의 탐색 창에서 마이그레이션 또는 복제를 선택한 다음 엔드포인트를 선택합니다.
Create endpoint(엔드포인트 생성)을 선택합니다.
엔드포인트 생성 페이지에서 소스 엔드포인트를 선택합니다.
엔드포인트 구성 섹션에서 다음을 수행합니다.
고유하고 의미 있는 엔드포인트 식별자(예: "docdb-source")를 입력합니다.
소스 엔진으로 Amazon DocumentDB를 선택합니다.
엔드포인트 데이터베이스 액세스에서 수동으로 액세스 정보 제공을 선택합니다.
서버 이름에
소스 Amazon DocumentDB 클러스터 엔드포인트
를 입력합니다.포트에 27017(기본 Amazon DocumentDB 포트)을 입력합니다.
SSL 모드에서 verify-full(Amazon DocumentDB에 권장)을 선택합니다.
CA 인증서에서 Amazon RDS 루트 CA 인증서를 선택합니다.
인증 모드에서 애플리케이션에 적합한 모드(암호/SSL)를 선택합니다(기본값은 보안 암호 관리자).
인증 모드가 암호인 경우 다음을 제공합니다.
사용자 이름 및 암호: Amazon DocumentDB 자격 증명을 입력합니다.
데이터베이스 이름: 소스 데이터베이스 이름입니다.
인증 메커니즘: SCRAM-SHA-1(기본값) 또는 적절한 메커니즘
메타데이터 모드의 경우 문서의 기본 설정을 그대로 둡니다.
대상 엔드포인트 생성(Amazon DocumentDB)
DMS 콘솔의 탐색 창에서 마이그레이션 또는 복제를 선택한 다음 엔드포인트를 선택합니다.
Create endpoint(엔드포인트 생성)을 선택합니다.
엔드포인트 생성 페이지에서 대상 엔드포인트를 선택합니다.
엔드포인트 구성 섹션에서 다음을 수행합니다.
고유하고 의미 있는 엔드포인트 식별자(예: "docdb-target")를 입력합니다.
Amazon DocumentDB를 대상 엔진으로 선택합니다.
엔드포인트 데이터베이스에 대한 액세스에서 데이터베이스에 대한 액세스를 인증하는 데 사용할 방법을 선택합니다.
AWS Secrets Manager를 선택하는 경우 보안 암호 필드에 Amazon DocumentDB 보안 인증 정보를 저장할 보안 암호를 선택합니다.
수동으로 액세스 정보 제공을 선택한 경우:
서버 이름에
대상 Amazon DocumentDB 클러스터 엔드포인트
를 입력합니다.포트에 27017(기본 Amazon DocumentDB 포트)을 입력합니다.
SSL 모드에서 verify-full(Amazon DocumentDB에 권장)을 선택합니다.
CA 인증서의 경우 SSL 확인을 위해 CA 인증서 번들을 다운로드하고 지정합니다.
인증 모드에서 애플리케이션에 적합한 모드(암호/SSL)를 선택합니다(기본값은 보안 암호 관리자).
인증 모드가 암호인 경우 다음을 제공합니다.
사용자 이름 및 암호: Amazon DocumentDB 자격 증명을 입력합니다.
데이터베이스 이름: 소스 데이터베이스 이름입니다.
인증 메커니즘: SCRAM-SHA-1(기본값) 또는 적절한 메커니즘
메타데이터 모드의 경우 문서의 기본 설정을 그대로 둡니다.
복제 작업 생성
DMS 콘솔의 탐색 창에서 마이그레이션 또는 복제를 선택한 다음 작업을 선택합니다.
작업 생성을 선택합니다.
작업 생성 페이지의 작업 구성 섹션에서 다음을 수행합니다.
고유하고 의미 있는 작업 식별자(예: "mongodb-docdb-replication")를 입력합니다.
소스 데이터베이스 엔드포인트 드롭다운 메뉴에서 이전에 생성한 소스 엔드포인트를 선택합니다.
대상 데이터베이스 엔드포인트 드롭다운 메뉴에서 이전에 생성한 대상 엔드포인트를 선택합니다.
작업 유형에서 마이그레이션 및 복제를 선택합니다.
설정 섹션에서:
대상 테이블 준비 모드의 경우 기본 설정을 그대로 둡니다.
전체 로드가 완료된 후 작업 중지의 경우 기본 설정을 그대로 둡니다.
LOB 열 설정의 경우 제한된 LOB 모드 설정을 그대로 둡니다.
데이터 검증의 경우 기본 설정인 끄기를 그대로 둡니다.
작업 로그에서 CloudWatch 로그 켜기 상자를 선택합니다.
배치 최적화 적용의 경우 기본 설정인 선택하지 않은(꺼짐) 상태로 둡니다.
작업 설정 섹션 상단으로 돌아가 편집 모드에서 JSON 편집기를 선택하고 다음 속성을 설정합니다.
{ "TargetMetadata": { "ParallelApplyThreads": 5 }, "FullLoadSettings": { "MaxFullLoadSubTasks": 16 } }
테이블 매핑 섹션에서 새 선택 규칙을 추가합니다.
스키마 이름에 마이그레이션할 소스 데이터베이스를 추가합니다. %를 사용하여 여러 데이터베이스를 지정합니다.
스키마 테이블 이름에 마이그레이션할 소스 컬렉션을 추가합니다. %를 사용하여 여러 컬렉션을 지정합니다.
작업에서 기본 설정인 포함을 그대로 둡니다.
대용량 컬렉션(100GB 초과)의 경우 테이블 설정 규칙을 추가합니다.
스키마 이름에 마이그레이션할 소스 데이터베이스를 추가합니다. %를 사용하여 여러 데이터베이스를 지정합니다.
스키마 테이블 이름에 마이그레이션할 소스 컬렉션을 추가합니다. %를 사용하여 여러 컬렉션을 지정합니다.
파티션 수에 16(보다 작아야 함)을 입력합니다
MaxFullLoadSubTask
.
사전 마이그레이션 평가 섹션에서 꺼져 있는지 확인합니다.
오프라인 마이그레이션
이 섹션에서는 기본 MongoDB 도구인 mongodump
및를 사용하여 자체 관리형 MongoDB 인스턴스에서 Amazon DocumentDB로 오프라인 마이그레이션을 수행하는 프로세스를 간략하게 설명합니다mongorestore
.
사전 조건
소스 MongoDB 요구 사항
적절한 권한을 가진 소스 MongoDB 인스턴스에 대한 액세스.
필요한 경우
mongodump
를 설치합니다(MongoDB 설치 중에 설치됨).덤프 파일을 위한 디스크 공간이 충분한지 확인합니다.
대상 Amazon DocumentDB 요구 사항
Amazon DocumentDB 클러스터가 프로비저닝되어 있는지 확인합니다.
마이그레이션을 용이하게 하려면 Amazon DocumentDB와 동일한 VPC에 EC2 인스턴스가 있는지 확인합니다.
소스 환경과 Amazon DocumentDB 간에 네트워크 연결을 사용할 수 있어야 합니다.
mongorestore는 마이그레이션 EC2 인스턴스에 설치해야 합니다.
Amazon DocumentDB에 액세스하려면 적절한 IAM 권한을 구성해야 합니다.
일반 요구 사항
AWS CLI 를 구성해야 합니다(중간 스토리지에 AWS 서비스를 사용하는 경우).
데이터 전송에 충분한 대역폭을 사용할 수 있어야 합니다.
가동 중지 기간이 승인되어야 합니다(실시간 마이그레이션을 수행하는 경우 다른 접근 방식 고려).
Amazon DocumentDB 클러스터 준비
AWS다음에서 Amazon DocumentDB 클러스터를 생성합니다.
워크로드에 따라 적절한 인스턴스 크기입니다.
VPC, 서브넷 및 보안 그룹을 구성합니다.
파라미터 그룹을 통해 필요한 파라미터를 활성화합니다.
데이터 덤프 수행(mongodump)
다음 옵션 중 하나를 선택하여 덤프 파일을 생성합니다.
옵션 1: 기본
mongodump -- uri="mongodb://
<source_user>
:<source_password>
@<source_host>
:<source_port>
/<database>
" -- out=/path/to/dump옵션 2: 제어 및 성능 향상
mongodump \ --uri="mongodb://
<source_user>
:<source_password>
@<sourcehost>
:<source_port>
" \ --out=/path/to/dump \ --gzip \# Compress output --numParallelCollections=4 \# Parallel collections dump --ssl \# If using SSL --authenticationDatabase=admin \ # If auth is required --readPreference=secondaryPreferred # If replica set옵션 3: 대규모 데이터베이스
mongodump \ --host=
<source_host>
\ --port=<source_port>
\ --username=<source_user>
\ --password=<source_password>
\ --db=<specific_db>
\# Only dump specific DB --collection=<specific_collection>
\ # Only dump specific collection --query='{ "date": { "$gt": "2020-01-01" } }' \ # Filter documents --archive=/path/to/archive.gz \# Single archive output --gzip \ --ssl
복원 환경으로 덤프 파일 전송
덤프 크기에 따라 적절한 방법을 선택합니다.
소규모 - 마이그레이션 머신(이전에 생성한 EC2 인스턴스)에 직접 복사합니다.
scp -r /path/to/dump user@migration-machine:/path/to/restore
중간 - Amazon S3를 중간 스토리지로 사용:
aws s3 cp --recursive /path/to/dump s3://your-bucket/mongodb-dump/
대규모 - 매우 큰 데이터베이스의 경우 AWS DataSync 또는 물리적 전송을 고려합니다.
Amazon DocumentDB(mongorestore)로 데이터 복원
복원 프로세스를 시작하기 전에 Amazon DocumentDB에서 인덱스를 생성합니다. Amazon DocumentDB 인덱스 도구를
다음 옵션 중 하나를 선택하여 데이터를 복원합니다.
옵션 1: 기본 복원
mongorestore --uri="mongodb://
<docdb_user>
:<docdb_password>
@<docdb_endpoint>
:27017" /path/to/dump-
옵션 2: 제어 및 성능 향상
mongorestore \ --uri="mongodb://
<docdb_user>
:<docdb_password>
@<docdb_endpoint>
:27017" \ --ssl \ --sslCAFile=/path/to/rds-combined-ca-bundle.pem \ # DocumentDB CA cert --gzip \# If dumped with gzip --numParallelCollections=4 \# Parallel restoration --numInsertionWorkersPerCollection=4 \# Parallel documents insertion --noIndexRestore \# skip indexes as they are pre-created /path/to/dump 옵션 3: 대규모 데이터베이스 또는 특정 제어
mongorestore \ --host=
<docdb_endpoint>
\ --port=27017 \ --username=<docdb_user>
\ --password=<docdb_password>
\ --ssl \ --sslCAFile=/path/to/rds-combined-ca-bundle.pem \ --archive=/path/to/archive.gz \# If using archive format --gzip \ --nsInclude="db1.*" \# Only restore specific namespaces --nsExclude="db1.sensitive_data" \ # Exclude specific collections if needed --noIndexRestore \# skip indexes as they are pre-created --writeConcern="{w: 'majority'}" # Ensure write durability
모니터링
이 섹션에서는 다음에서 진행 중인 마이그레이션의 진행 상황, 성능 및 상태를 추적하는 자세한 모니터링 프로세스를 제공합니다.
MongoDB에서 Amazon DocumentDB로
or
Amazon DocumentDB에서 Amazon DocumentDB로
모니터링 단계는 마이그레이션 방법(AWS DMS, mongodump/mongorestore 또는 기타 도구)에 관계없이 적용됩니다.
AWS DMS 마이그레이션 모니터링(해당하는 경우)
다음 주요 CloudWatch 지표를 모니터링합니다.
전체 로드 단계 지표
FullLoadThroughputBandwidthTarget - 전체 로드 중 네트워크 대역폭(KB/초)
FullLoadThroughputRowsTarget - 초당 로드된 행/문서 수
FullLoadThroughputTablesTarget - 분당 완료된 테이블/컬렉션 수
FullLoadProgressPercent - 완료된 전체 로드의 백분율
TablesLoaded - 성공적으로 로드된 테이블/컬렉션 수
TablesLoading - 현재 로드 중인 테이블/컬렉션 수
TablesQueued - 로드 대기 중인 테이블/컬렉션 수
TablesErrored - 로드에 실패한 테이블/컬렉션 수
CDC 단계 지표
CDCLatencyTarget - 소스 변경과 대상 애플리케이션 간의 시간 지연(초)
CDCLatencySource - 소스 변경과 소스 읽기 DMS 간의 시간 지연(초)
CDCThroughputRowsTarget - 지속적 복제 중에 적용되는 초당 행
CDCThroughputBandwidthTarget — CDC 중 네트워크 대역폭(KB/초)
CDCIncomingChanges - 소스에서 수신된 변경 이벤트 수
CDCChangesMemoryTarget - 대상 측에 변경 사항을 저장하는 데 사용되는 메모리(MB)
리소스 지표
CPUUtilization - 복제 인스턴스의 CPU 사용량
FreeableMemory - 복제 인스턴스에서 사용 가능한 메모리
FreeStorageSpace - 복제 인스턴스에서 사용 가능한 스토리지
NetworkTransmitThroughput - 복제 인스턴스의 네트워크 처리량
NetworkReceiveThroughput - 복제 인스턴스의 네트워크 처리량
오류 지표
ErrorsCount - 마이그레이션 중 총 오류 수
TableErrorsCount - 테이블별 오류 수
RecordsErrorsCount - 레코드별 오류 수
및 CDCLatencyTarget
와 같은 중요한 지표에 대한 CloudWatch 경보를 생성CPUUtilization
하여 마이그레이션 성능이 저하될 경우 알림을 수신합니다.
DMS 로그(CloudWatch 로그)
Amazon CloudWatch Logs 콘솔로 이동합니다.
로그 그룹에서를 찾아 선택합니다. "dms-tasks –"와 비슷합니다.
오류 정보가 포함될 수 있는 로그 스트림을 찾습니다.
이름에 "오류"가 있는 스트림
작업 IDs 또는 엔드포인트 이름이 있는 스트림
마이그레이션 중 가장 최근 로그 스트림
이러한 스트림 내에서 다음과 같은 키워드를 검색합니다.
"오류"
"예외"
"실패"
"경고"
DMS 작업 상태( 사용 AWS CLI)
aws dms describe-replication-tasks --filters Name=replication-task id,Values=
<task_id>
--query "ReplicationTasks[0].Status"
예상 상태 흐름:
생성 → 준비됨 → 실행 중 → 중지 중 → 중지됨(또는 실패)
를 사용하여 모니터링 docdb-dashboarder
이 docdb-dashboarder
도구는 필수 성능 지표가 포함된 CloudWatch 대시보드를 자동으로 생성하여 Amazon DocumentDB 클러스터에 대한 포괄적인 모니터링을 제공합니다. 이러한 대시보드에는 중요한 클러스터 수준 지표(복제 지연, 작업 카운터), 인스턴스 수준 지표(CPU, 메모리, 연결) 및 스토리지 지표(볼륨 사용량, 백업 스토리지)가 표시됩니다. 마이그레이션 시나리오의 경우이 도구는 CDC 복제 지연 및 작업 속도와 같은 지표를 사용하여 마이그레이션 진행 상황을 추적하는 특수 대시보드를 제공합니다. 대시보드는 여러 클러스터를 동시에 모니터링하고 NVMe 지원 인스턴스에 대한 지원을 포함할 수 있습니다. 팀은 이러한 지표를 시각화하여 성능 병목 현상을 사전에 식별하고, 리소스 할당을 최적화하고, Amazon DocumentDB 배포의 원활한 운영을 보장할 수 있습니다. 이 도구를 사용하면 모든 환경에서 일관된 모니터링을 제공하면서 수동 대시보드를 생성할 필요가 없습니다. 설정 지침 및 고급 구성 옵션은 Amazon DocumentDB Dashboarder Tool
검증
이 섹션에서는 다음에서 마이그레이션한 후 데이터 일관성, 무결성 및 애플리케이션 호환성을 보장하기 위한 자세한 검증 프로세스를 제공합니다.
MongoDB에서 Amazon DocumentDB로
or
Amazon DocumentDB에서 Amazon DocumentDB로
검증 단계는 마이그레이션 방법(AWS DMS, mongodump/mongorestore 또는 기타 도구)에 관계없이 적용됩니다.
검증 체크리스트
각 컬렉션의 문서 수가 소스와 대상 간에 일치하는지 확인합니다.
MongoDB 소스
mongo --host
<source_host>
--port<port>
--username<user>
-- password<password>
--eval "db.<collection>
.count()"
Amazon DocumentDB 대상
mongo --host
<target_host>
--port<port>
--username<user>
-- password<password>
--eval "db.<collection>
.count()"
스키마 및 인덱스 검증
다음을 확인하세요.
모든 컬렉션이 대상에 존재합니다.
인덱스가 올바르게 복제됩니다.
스키마 정의(적용된 경우)는 동일합니다.
컬렉션 확인(소스 대 대상)
mongo --host
<source_host>
--eval "show collections" mongo --host<target_host>
--ssl --eval "show collections"
인덱스 확인(소스 대 대상)
mongo --host
<source_host>
--eval" db.<collection>
.getIndexes()" mongo --host<target_host>
--ssl –eval" db.<collection>
.getIndexes()"
컬렉션 목록을 비교하여 누락되거나 추가되는 컬렉션이 없는지 확인합니다.
인덱스 이름, 키 정의, 고유 제약 조건 및 TTL 인덱스(있는 경우)를 확인하여 인덱스를 확인합니다.
스키마 검증 규칙 확인(MongoDB에서 스키마 검증을 사용하는 경우)
mongo --host
<source_host>
--eval" db.getCollectionInfos({name: '<collection>
'}) [0].options.validator" mongo --host<target_host>
--ssl –eval" db.getCollectionInfos({name: '<collection>
'})[0].options.validator"
데이터 샘플링 및 필드 수준 검증
문서를 무작위로 샘플링하고 소스와 대상 간의 필드를 비교할 수 있습니다.
수동 샘플링
5개의 무작위 문서 가져오기(소스):
mongo --host
<source_host>
--eval "db.<collection>
.aggregate([{ \$sample: { size: 5 } }])"
동일한 문서 IDs(대상)를 가져옵니다.
mongo --host
<target_host>
--ssl –eval "db.<collection>
.find({ _id: { \$in: [<list_of_ids>
] } })"
자동 샘플링
import pymongo # Connect to source and target source_client = pymongo.MongoClient("
<source_uri>
") target_client = pymongo.MongoClient("<target_uri>
", ssl=True) source_db = source_client["<db_name>
"] target_db = target_client["<db_name>
"] # Compare 100 random documents for doc in source_db.<collection>
.aggregate([{ "$sample": { "size": 100 } }]): target_doc = target_db.<collection>
.find_one({ "_id": doc["_id"] }) if target_doc != doc: print(f"❌ Mismatch in _id: {doc['_id']}") else: print(f"✅ Match: {doc['_id']}")
DataDiffer 도구를 사용한 검증
DataDiffer 도구는
사전 조건
DataDiffer 도구를 설치하기 전에 다음 사전 조건을 충족해야 합니다.
Python 3.7 이상
PyMongo 라이브러리
소스 MongoDB 클러스터와 대상 Amazon DocumentDB 클러스터 모두에 대한 네트워크 연결
설정 및 설치
리포지토리를 복제하고 DataDiffer 디렉터리로 이동합니다.
git clone https://github.com/awslabs/amazon-documentdb-tools.git cd amazon-documentdb-tools/migration/data-differ
필수 종속성 설치
pip install -r requirements.txt
데이터 검증 실행
연결 세부 정보가 포함된 구성 파일(예: config.json) 생성
{ "source": { "uri": "mongodb://username:password@source-mongodb- host:27017/?replicaSet=rs0", "db": "your_database", "collection": "your_collection" }, "target": { "uri": "mongodb://username:password@target-docdb- cluster.region.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=global- bundle.pem&replicaSet=rs0", "db": "your_database", "collection": "your_collection" }, "options": { "batch_size": 1000, "threads": 4, "sample_size": 0, "verbose": true } }
DataDiffer 도구 실행
python differ.py --config config.json
대규모 컬렉션의 경우 샘플링을 사용하여 데이터의 하위 집합을 검증합니다.
python differ.py --config config.json --sample-size 10000
여러 컬렉션을 검증하려면 별도의 구성 파일을 생성하거나 배치 모드를 사용합니다.
python differ.py --batch-config batch_config.json
결과 해석
도구는 다음을 출력합니다.
소스 및 대상의 총 문서
일치하는 문서 수
누락된 문서 수
차이가 있는 문서 수
차이에 대한 세부 보고서(있는 경우)
모범 사례
다음은 DataDiffer 도구를 사용할 때의 모범 사례입니다.
단계별 실행 - 먼저 문서 수를 검증한 다음 키 문서를 샘플링하고 마지막으로 필요한 경우 전체 비교를 실행합니다.
스키마 차이점 확인 - Amazon DocumentDB에는 MongoDB에 비해 몇 가지 제한 사항이 있습니다. 도구는 호환되지 않는 데이터 유형 또는 구조를 강조 표시합니다.
침묵 기간 동안 검증 - 일관성을 보장하기 위해 쓰기 작업을 최소화할 때 검증을 실행합니다.
리소스 사용량 모니터링 - 비교 프로세스는 리소스 집약적일 수 있습니다. 그에 따라 배치 크기와 스레드 수를 조정합니다.
인덱스 검증 - 데이터 검증 후 대상 Amazon DocumentDB 클러스터에 필요한 모든 인덱스가 생성되었는지 확인합니다.
문서 검증 결과 - 마이그레이션 설명서의 일부로 각 컬렉션에 대한 검증 결과를 기록해 둡니다.