다음을 통해 공유


MongoDB에서 Azure DocumentDB로 데이터를 마이그레이션하는 옵션은 무엇인가요?

이 문서는 MongoDB에서 Azure DocumentDB로의 마이그레이션을 계획하고 실행하는 데 도움이 됩니다. 사용 가능한 마이그레이션 도구, 마이그레이션의 주요 단계 및 위험을 줄이고 가동 중지 시간을 최소화하는 모범 사례를 다룹니다.

온-프레미스 MongoDB 서버, 클라우드 호스팅 VM 또는 관리되는 MongoDB 서비스에서 마이그레이션하는 경우 이 문서의 마이그레이션 옵션, 지침 및 모범 사례가 적용됩니다.

주요 마이그레이션 단계

성공적인 마이그레이션은 이러한 고유한 단계를 따릅니다. 각 단계에는 특정 목표 및 성공 기준이 있습니다.

1. 평가

Azure DocumentDB 마이그레이션 확장을 사용하여 원본 MongoDB의 자동화된 검사를 실행하여 지원되지 않는 기능, 명령, 쿼리 구문 및 인덱스 유형을 식별합니다. 또한 평가는 MongoDB 버전, 라이선스, 인스턴스 유형 및 데이터베이스 및 컬렉션 메트릭에 대한 개요를 제공합니다. 이러한 결과를 사용하여 스키마 변경을 계획하고 마이그레이션 전에 필요한 리팩터링을 식별합니다.

팁 (조언)

지원되는 MQL(MongoDB 쿼리 언어) 기능 및 구문을 자세히 검토하고 실제 마이그레이션 전에 개념 증명을 수행하는 것이 좋습니다.

2. 준비

평가 보고서를 분석하고 원본 TPS(초당 트랜잭션)를 측정합니다. 대표 데이터에 대해 평가판 마이그레이션을 실행하여 대상 컴퓨팅 계층, 스토리지 계층 및 분할된 데이터베이스 수를 설정합니다. 성능 테스트를 수행하여 대상 구성이 요구 사항을 충족하는지 확인합니다.

3. 구체화

프로덕션 쿼리 패턴과 일치하는 적절한 분할 키 및 인덱스를 사용하여 대상 컬렉션을 준비합니다. 여러 분할된 데이터베이스를 사용하는 경우 부하를 분산하고 분할 간 작업을 최소화하기 위해 분할된 데이터베이스 간에 컬렉션을 분산하는 방법을 결정합니다.

4. 마이그레이션

마이그레이션 작업을 실행하여 오프라인 또는 온라인 모드로 데이터를 이동합니다.

  • 오프라인 마이그레이션: 시작 시 원본의 스냅샷을 만들고 대상에 대량 복사합니다. 스냅샷이 복사되지 않은 후 원본에서 추가, 업데이트 또는 삭제된 모든 데이터입니다. 필요한 가동 중지 시간은 대량 복사에 걸리는 시간에 따라 달라집니다.
  • 온라인 마이그레이션: 오프라인과 동일한 대량 복사를 수행하지만 프로세스 전체에서 변경 스트림을 모니터링합니다. 마이그레이션 중에 변경된 내용은 대상에 복제되므로 필요한 애플리케이션 가동 중지 시간은 최소화됩니다. 원본 측에 변경 스트림과 충분한 용량의 OPLOG가 있어야 합니다.

팁 (조언)

온라인 마이그레이션의 경우 마이그레이션 기간 동안 변경 스트림을 사용하도록 설정하고 원본 MongoDB에서 oplog의 크기를 적절하게 조정하여 모든 변경 내용을 캡처해야 합니다.

사용 가능한 도구는 마이그레이션 도구를 참조하세요.

5. 유효성 검사

최신 업데이트를 포함하여 모든 데이터가 복사되었는지 확인합니다. 문서 수를 비교하고, 샘플 기반 유효성 검사를 실행하고, 인덱스 및 데이터 구조가 대상에 대한 예상과 일치하는지 확인합니다. 자동화된 스크립트를 사용하여 유효성 검사를 반복 가능하고 일관되게 만듭니다.

6. 컷오버

읽기 트래픽을 대상으로 이동하고 기능 또는 성능 문제가 없는지 확인합니다. 읽기 유효성 검사가 성공하면 쓰기 트래픽을 대상으로 전환하십시오. 전환 창구 동안 어떤 이상 현상도 발생하지 않도록 면밀히 감독하세요.

마이그레이션 도구

이 문서에서 설명하는 도구는 다음 원본에서 MongoDB 워크로드를 마이그레이션하는 데 도움이 됩니다.

  • MongoDB Virtual Machine
  • MongoDB 아틀라스
  • AWS DocumentDB

Azure DocumentDB 마이그레이션 확장 프로그램

Visual Studio Code에서 Azure DocumentDB 마이그레이션 확장(공개 미리 보기)을 사용하여 마이그레이션 작업을 만들고 관리하세요. 이 솔루션은 간편성, 보안성, 무중단을 위해 설계되었습니다.

이 도구는 서비스 중단 없이 워크로드를 마이그레이션하는 데 도움이 되는 명확한 단계별 지침을 제공합니다. 당신은 할 수 있어요:

  • 마이그레이션을 위한 특정 데이터베이스 및 컬렉션 선택
  • 친숙한 VS Code 인터페이스 내에서 모든 단계 수행
  • 프로세스 전체 에서 보안 연결 확인
  • 확장 사용에 대한 비용 0 을 이용하세요.

Azure DocumentDB 마이그레이션 확장을 사용하면 추가 인프라 또는 복잡성 없이 제어 및 보안을 유지하면서 마이그레이션 과정을 간소화할 수 있습니다.

웹앱 유틸리티(온라인)

효율성, 안정성 및 사용 편의성을 위해 설계된 도구인 MongoMigrationwebBasedUtility를 사용하여 Azure DocumentDB로의 마이그레이션을 간소화합니다. 리포지토리는 워크로드를 마이그레이션하기 위한 자세한 단계별 지침을 제공합니다. 이 도구는 온라인 및 오프라인 데이터 마이그레이션을 위한 원활한 환경을 제공합니다. 이 프로세스는 사용자에게 친숙하며 원본 및 대상 세부 정보만 제공해야 합니다. 이를 통해 제어, 보안 및 확장성을 유지하면서 MongoDB 컬렉션을 손쉽게 마이그레이션하여 Azure DocumentDB의 잠재력을 최대한 활용할 수 있습니다.

주요 기능은 다음과 같습니다.

  • 보안 강화를 위해 가상 네트워크 내에서 프라이빗 배포를 지원합니다.
  • 연결 손실 또는 일시적인 오류가 있는 경우 자동 다시 시작 기능
  • 사용자에게 친숙한 인터페이스
  • GitHub C# 소스 코드에 액세스

이 도구는 유연한 배포 옵션을 지원하며 다른 Azure 리소스에 대한 종속성 없이 독립적으로 작동합니다. 또한 사용자 지정 가능한 Azure Web App 가격 책정 계획을 사용하여 확장 가능한 성능을 제공합니다.

네이티브 MongoDB 도구(오프라인)

mongodump/mongorestore, mongoexport/mongoimport 같은 네이티브 MongoDB 도구를 사용하여 데이터 세트를 실시간 변경을 복제하지 않고 오프라인으로 Azure DocumentDB 서비스로 마이그레이션할 수도 있습니다.

Scenario MongoDB 네이티브 도구
데이터베이스 데이터의 하위 집합 이동(JSON/CSV 기반) mongoexport/mongoimport
전체 데이터베이스 이동(BSON 기반) mongodump/mongorestore
  • mongoexport/mongoimport는 MongoDB 데이터베이스의 하위 집합을 마이그레이션하기 위한 최상의 마이그레이션 도구 쌍입니다.
    • mongoexport는 기존 데이터를 사람이 읽을 수 있는 JSON 또는 CSV 파일로 내보냅니다. mongoexport는 내보낼 기존 데이터의 하위 집합을 지정하는 인수를 사용합니다.
    • mongoimport JSON 또는 CSV 파일을 열고 대상 데이터베이스 인스턴스에 콘텐츠를 삽입합니다(이 경우 DocumentDB Azure).
    • JSON 및 CSV는 압축 형식이 아닙니다. mongoimport Azure DocumentDB로 데이터를 보내면 초과 네트워크 요금이 발생할 수 있습니다.
  • mongodump/mongorestore는 전체 MongoDB 데이터베이스를 마이그레이션하기 위한 최상의 마이그레이션 도구 쌍입니다. 압축 BSON 형식을 사용하면 데이터가 Azure DocumentDB에 삽입되므로 네트워크 리소스를 보다 효율적으로 사용할 수 있습니다.
    • mongodump는 기존 데이터를 BSON 파일로 내보냅니다.
    • mongorestore BSON 파일 덤프를 Azure DocumentDB로 가져옵니다.

비고

MongoDB 기본 도구는 호스트 하드웨어가 허용하는 속도만큼만 데이터를 이동할 수 있습니다.

마이그레이션 모범 사례

이러한 모범 사례를 사용하여 위험을 줄이고, 용량을 보다 정확하게 예측하고, 마이그레이션 속도를 개선하며, 컷오버를 안전하게 실행합니다.

고장 줄이기

  • 연결 문자열에서 URL로 인코딩된 암호를 사용합니다. 특수 문자 @#와 같은 기호는 인코딩되지 않을 때 구문 분석이 중단될 수 있습니다. URL 인코딩은 평가 및 마이그레이션 실행 중에 연결 오류를 방지하는 데 도움이 됩니다.

  • 마이그레이션 전에 미리 배포 평가를 실행합니다. 평가를 통해 지원되지 않는 기능, 호환성 격차 및 잠재적인 차단기를 조기에 식별할 수 있습니다. 마이그레이션 전에 결과를 해결하여 중단 중에 재작업을 줄입니다.

  • 프로덕션 전에 마이그레이션 및 중단을 연습합니다. 비프로덕션 환경에서 하나 이상의 리허설 마이그레이션을 실행합니다. 연습은 프로덕션 중단 중에 타이밍 정확도, 팀 준비 상태 및 신뢰도를 향상시킵니다.

인프라 크기를 정확하게 조정합니다.

  • 작지만 대표적인 데이터 세트에서 평가판 마이그레이션을 실행합니다. 평가판을 사용하여 실제 처리량, 대기 시간 및 리소스 소비를 캡처합니다. 대표적인 샘플은 가상 테스트 데이터보다 더 나은 추정치를 제공합니다.

  • 평가판 결과를 추정하여 컴퓨팅 계층, 스토리지 계층 및 분할된 데이터베이스 수를 예측합니다. 관찰된 평가판 메트릭을 사용하여 전체 데이터 세트 볼륨을 기반으로 최종 크기 조정 요구 사항을 예상합니다. 프로덕션 데이터 배포가 샘플과 다른지 예측값을 다시 확인합니다.

  • 프로덕션과 유사한 설정에서 대표적인 문서 수, 크기 및 구조를 사용합니다. 평가판 중에 프로덕션 인덱싱 및 분할 설정을 일치하여 비용 또는 마이그레이션 기간을 과소 평가하지 않도록 합니다. 비프로덕션 설정은 잘못된 결과를 생성할 수 있습니다.

  • 원본 및 대상 크기가 동일하다고 가정하는 대신 평가판 결과에서 대상 스토리지를 예측합니다. 원본 및 대상 스토리지 공간은 인덱스 정의와 데이터 레이아웃의 차이로 인해 다를 수 있습니다. 평가 결과를 사용하여 안전한 버퍼를 사용하여 스토리지를 계획합니다.

마이그레이션 속도 최적화

  • 가능하면 동일한 지역 내에서 마이그레이션합니다. 원본과 대상을 동일한 지역에 유지하면 네트워크 대기 시간이 줄어들고 데이터 전송 성능이 향상됩니다. 지역 간 데이터 전송 비용을 줄일 수도 있습니다.

  • 마이그레이션 중에 확장한 다음, 전환 후 축소합니다. 예를 들어 일시적으로 대상 클러스터를 M200으로 확장하여 마이그레이션 처리량을 늘릴 수 있습니다. 마이그레이션 후에는 안정적인 상태 워크로드에 대해 지원되는 범위에서 적절한 계층으로 축소합니다.

  • 더 빠른 쓰기를 위해 IOPS가 더 높은 디스크를 선택합니다. IOPS가 높을수록 쓰기가 많은 마이그레이션 성능이 크게 향상될 수 있습니다. 디스크 크기는 일반적으로 나중에 축소할 수 없으므로 계획 중에 디스크 크기를 신중하게 선택합니다.

롤백이 없기 때문에 커트오버를 신중하게 계획하십시오.

  • 트래픽이 적은 기간 동안 가동 중지 시간을 계획합니다. 필요한 가동 중지 시간은 마이그레이션이 완료된 후 유효성 검사 단계를 수행하는 시간에 따라 달라집니다. 트래픽이 적은 기간은 비즈니스 영향을 줄입니다.

  • 잘라내기 직전에 원본에 대한 모든 쓰기를 중지합니다. 이 단계에서는 원본과 대상 간의 막판 차이를 방지합니다. 전환 작업을 완료하기 전에 쓰기 작업이 완전히 일시 중지되었는지 확인하세요.

  • 쓰기를 이동하기 전에 마이그레이션된 데이터의 유효성을 검사합니다. 문서 수를 비교한 다음 임의 샘플 문서 비교(예: 해시 기반 검사)를 실행합니다. 가능한 경우 스크립트를 사용하여 유효성 검사를 반복할 수 있도록 합니다.

  • 애플리케이션 연결 문자열을 업데이트하고 대상에서 테스트합니다. 프로덕션 쓰기를 사용하도록 설정하기 전에 대상 읽기 및 테스트 트래픽에 대해 기능 및 성능 유효성 검사를 실행합니다. 중요한 경로가 예상대로 작동하는지 확인합니다.

  • 유효성 검사가 성공한 후에만 쓰기 트래픽을 이동합니다. 테스트 결과가 성공적이고 일관성이 있을 때만 프로덕션 쓰기를 대상으로 옮깁니다. 애플리케이션 아키텍처에서 지원하는 경우 단계적 롤아웃을 사용합니다.

원활한 마이그레이션을 위해 팀 간 조정

  • 모든 이해 관계자, 즉 앱, 데이터, 인프라, 보안, 네트워크 및 관리 팀으로부터 동의를 확보하십시오. 기대와 책임을 조기에 조정합니다. 공유 소유권은 실행 중에 오해와 지연을 줄입니다.

  • 계획 및 평가판 실행을 사용하여 팀의 신뢰를 구축하고 절차를 구체화합니다. 원활한 마이그레이션에 대한 바로 가기는 없습니다. 평가판은 위험 수준이 낮은 환경에서 문제를 노출하고 팀에게 연습을 제공합니다.

  • 컷오버를 중요한 동시에 긴급히 처리해야 할 과제로 간주하십시오. 컷오버에는 정확한 조정과 명확한 통신이 필요합니다. 의사 결정자를 지정하고 시작하기 전에 에스컬레이션 경로를 설정합니다.

  • 각 단계를 수행할 사람, 발생 시기 및 가동 중지 시간을 최소화하는 방법을 알고 있습니다. 책임을 할당하고, 타임라인을 설정하고, 성공 기준에 맞춥니다. 전환 런북을 작성하여 모든 참여자와 공유합니다.

  • 중단 시 여러 워크로드에 대한 업데이트가 동시에 필요한 경우 모든 관련자와 조정합니다. 모든 팀에서 작동하는 유지 관리 기간 동안 중단을 예약합니다. 주요 비즈니스 이벤트 근처의 금요일 밤이나 기간을 피하십시오.

  • 실사 단계를 서두르거나 건너뛰지 마세요. 롤백이 없습니다. 철저한 유효성 검사와 신중한 실행은 비용이 많이 드는 실수를 방지합니다. 컷오버는 시간이 걸린다는 것을 인정하십시오. 속도를 중시한 지름길은 위험을 초래할 수 있습니다.