다음을 통해 공유


MongoDB에서 Azure Cosmos DB for MongoDB로 데이터 마이그레이션을 위한 마이그레이션 전 단계

적용 대상: MongoDB

Important

마이그레이션 전 단계를 수행하기 전에 이 전체 가이드를 읽어보세요.

이 MongoDB 사전 마이그레이션 가이드는 MongoDB 마이그레이션 시리즈의 일부입니다. 중요한 MongoDB 마이그레이션 단계는 아래와 같이 마이그레이션 전, 마이그레이션 및 마이그레이션 후입니다.

마이그레이션 전에서 마이그레이션 후까지의 마이그레이션 단계에 대한 다이어그램

사전 마이그레이션 개요

실제로 데이터를 이동하기 전에 마이그레이션에 대한 특정 사전 계획 및 의사 결정을 수행하는 것이 중요합니다. 이 초기 의사 결정 프로세스는 "마이그레이션 전"입니다.

마이그레이션 전 목표는 다음과 같습니다.

  1. 애플리케이션의 요구 사항을 충족하도록 Azure Cosmos DB를 설정하고
  2. 마이그레이션을 실행하는 방법을 계획합니다.

철저한 사전 마이그레이션을 수행하려면 다음 단계를 수행합니다.

  1. 기존 MongoDB 리소스 검색 및 기존 MongoDB 리소스의 데이터 마이그레이션 준비 상태 평가
  2. 기존 MongoDB 리소스를 새 Azure Cosmos DB 리소스에 매핑
  3. 전체 규모의 데이터 마이그레이션을 시작하기 전에 엔드투엔드 마이그레이션 프로세스의 실행 계획

그런 다음, 사전 마이그레이션 계획에 따라 마이그레이션을 실행합니다.

마지막으로, 중단 및 최적화의 중요한 마이그레이션 후 단계를 수행합니다.

위의 모든 단계는 성공적인 마이그레이션을 위해 중요합니다.

마이그레이션을 계획할 때는 가능하면 리소스별 수준에서 계획하는 것이 좋습니다.

마이그레이션 전 평가

첫 번째 마이그레이션 전 단계는 기존 MongoDB 리소스를 검색하고 리소스의 마이그레이션 준비 상태를 평가하는 것입니다.

검색에는 MongoDB 데이터 자산에 있는 기존 리소스(데이터베이스 또는 컬렉션)의 포괄적인 목록을 만드는 작업이 포함됩니다.

평가에는 지원되는 기능 및 구문을 사용하고 있는지 여부를 파악하는 작업이 포함됩니다. 또한 제한 및 할당량을 준수하는지 확인하는 것도 포함됩니다. 이 단계의 목적은 비호환성 및 경고 목록을 만드는 것입니다(있는 경우). 평가 결과가 있으면 마이그레이션 계획의 나머지 기간 동안 결과를 해결할 수 있습니다.

마이그레이션 전 평가를 완료하는 세 가지 방법이 있습니다. Azure Cosmos DB Migration for MongoDB 확장을 사용하는 것이 좋습니다.

Azure Cosmos DB Migration for MongoDB 확장

Azure Data Studio의 Azure Cosmos DB Migration for MongoDB 확장은 Azure Cosmos DB for MongoDB로 마이그레이션하는 MongoDB 워크로드를 평가하는 데 도움이 됩니다. 이 확장을 사용하여 워크로드에 대한 엔드투엔드 평가를 실행하고, Azure Cosmos DB에서 워크로드를 원활하게 마이그레이션하기 위해 수행해야 하는 작업을 확인할 수 있습니다. MongoDB 엔드포인트를 평가하는 동안 확장은 검색된 모든 리소스를 보고합니다.

참고 항목

실제로 마이그레이션하기 전에 지원되는 기능 및 구문, Azure Cosmos DB 제한 및 할당량을 자세히 살펴보고 개념 증명을 수행하는 것이 좋습니다.

수동 검색(레거시)

또는 데이터 자산 마이그레이션 스프레드시트를 만들 수도 있습니다. 이 스프레드시트의 목적은 생산성을 향상시키고, 엔드투엔드 마이그레이션을 계획하고, 마이그레이션 프로세스 전체에서 추적 문서로 사용하는 데 도움을 주는 것입니다.

  • 이 시트에는 MongoDB 데이터 자산에 있는 기존 리소스(데이터베이스 또는 컬렉션)의 포괄적인 목록이 포함되어 있습니다.
  • 이 스프레드시트는 목록 형식으로 데이터 공간 리소스의 레코드로 구성되어야 합니다.
  • 각 행은 리소스(데이터베이스 또는 컬렉션)에 해당합니다.
  • 각 열은 리소스의 속성에 해당합니다. 최소한 이름데이터 크기(GB)를 열로 사용하여 시작합니다.
  • 이 가이드를 진행하면서 이 스프레드시트를 엔드투엔드 마이그레이션 계획에 대한 추적 문서로 작성하며 필요에 따라 열을 추가합니다.

리소스를 검색하는 데 사용할 수 있는 몇 가지 도구는 다음과 같습니다.

스프레드시트를 살펴보고, 지원되는 기능 및 구문Azure Cosmos DB 제한 및 할당량을 자세히 비교하여 각 컬렉션을 확인합니다.

Database Migration Assistant 유틸리티(레거시)

참고 항목

Database Migration Assistant는 마이그레이션 전 단계를 지원하기 위한 레거시 유틸리티입니다. Azure Cosmos DB Migration for MongoDB 확장을 모든 마이그레이션 전 단계에 사용하는 것이 좋습니다.

DMA(Data Migration Assistant) 유틸리티를 사용하여 마이그레이션 전 단계를 지원할 수 있습니다.

마이그레이션 전 매핑

검색 및 평가 단계가 완료되면 수식의 MongoDB 쪽이 완료됩니다. 이제 수식의 Azure Cosmos DB 쪽을 계획할 차례입니다. 프로덕션 Azure Cosmos DB 리소스를 어떻게 설정하고 구성할 계획인가요? 리소스별 수준에서 계획을 수행합니다. 즉, 계획 스프레드시트에 다음 열을 추가해야 합니다.

  • Azure Cosmos DB 매핑
  • 분할 키
  • 데이터 모델
  • 전용 및 공유 처리량

자세한 내용은 다음 섹션에 제공됩니다.

용량 계획

Azure Cosmos DB로 마이그레이션하기 위한 용량 계획을 수행하려고 하시나요?

Azure Cosmos DB의 API for MongoDB 사용 시 고려 사항

Azure Cosmos DB 데이터 자산에 대한 계획을 수립하기 전에 다음 Azure Cosmos DB 개념을 이해해야 합니다.

  • 용량 모델: Azure Cosmos DB의 데이터베이스 용량은 처리량 기반 모델을 기반으로 합니다. 이 모델은 초당 컬렉션에 대해 실행할 수 있는 데이터베이스 작업의 수를 나타내는 단위인 초당 요청 단위를 기반으로 합니다. 이 용량은 데이터베이스 또는 컬렉션 수준에서 할당될 수 있으며, 할당 모델에서 프로비저닝하거나 자동 크기 조정 프로비저닝된 처리량을 사용하여 프로비저닝할 수 있습니다.
  • 요청 단위: 모든 데이터베이스 작업에는 Azure Cosmos DB에 관련된 RU(요청 단위) 비용이 포함됩니다. 실행되면 지정된 초에 사용 가능한 요청 단위 수준에서 요청 단위를 뺍니다. 요청에 현재 할당된 RU/초보다 많은 RU가 필요한 경우 문제를 해결하는 두 가지 옵션이 있습니다. 즉, RU 수를 늘리거나 다음 초가 시작될 때까지 기다린 후 작업을 다시 시도하는 것입니다.
  • 탄력적 용량: 지정된 컬렉션 또는 데이터베이스에 대한 용량은 언제든지 변경할 수 있습니다. 이 유연성을 통해 데이터베이스는 워크로드의 처리량 요구 사항에 맞게 탄력적으로 적응할 수 있습니다.
  • 자동 분할: Azure Cosmos DB는 분할(또는 파티션 키)만 필요한 자동 분할 시스템을 제공합니다. 자동 분할 메커니즘은 모든 Azure Cosmos DB API에서 공유되고, 원활한 데이터를 허용하고 수평 분산을 통해 전체를 확장할 수 있습니다.

Azure Cosmos DB 데이터 자산 계획

만드는 Azure Cosmos DB 리소스를 파악합니다. 이 프로세스에서는 데이터 자산 마이그레이션 스프레드시트를 단계별로 진행하고, 각각의 기존 MongoDB 리소스를 새 Azure Cosmos DB 리소스에 매핑해야 합니다.

  • 각 MongoDB 데이터베이스가 Azure Cosmos DB 데이터베이스가 되는 것으로 예상합니다.
  • 각 MongoDB 컬렉션이 Azure Cosmos DB 컬렉션이 되는 것으로 예상합니다.
  • Azure Cosmos DB 리소스에 대한 명명 규칙을 선택합니다. 일반적으로 데이터베이스와 컬렉션의 구조가 변경되는 경우를 제외하고는 동일한 리소스 이름을 유지하는 것이 좋습니다.
  • Azure Cosmos DB에서 분할된 컬렉션을 사용하는지, 아니면 분할되지 않은 컬렉션을 사용하는지를 확인합니다. 분할되지 않은 컬렉션 제한은 20GB입니다. 반면 분할은 많은 워크로드의 성능에 중요한 수평적 규모를 달성하는 데 도움이 됩니다.
  • 분할된 컬렉션을 사용하는 경우 MongoDB 컬렉션 분할 키가 Azure Cosmos DB 컨테이너 파티션 키가 된다고 가정하지 않습니다. 기존 MongoDB 데이터 모델 문서 구조가 Azure Cosmos DB에서 사용하는 모델과 동일해야 한다고 가정하지 않습니다.
    • 분할 키는 Azure Cosmos DB의 확장성과 성능을 최적화하기 위한 가장 중요한 설정이며, 데이터 모델링은 두 번째로 중요한 설정입니다. 이 두 설정은 모두 변경할 수 없으며, 일단 설정되면 변경할 수 없습니다. 따라서 계획 단계에서 이러한 설정을 최적화하는 것이 매우 중요합니다. 자세한 내용은 변경할 수 없는 결정 사항 섹션의 지침을 따르세요.
  • Azure Cosmos DB는 제한된 컬렉션과 같은 특정 MongoDB 컬렉션 형식을 인식하지 못합니다. 이러한 리소스에 대해 일반적인 Azure Cosmos DB 컬렉션을 만듭니다.
  • Azure Cosmos DB에는 두 가지 컬렉션 형식(공유 및 전용 처리량)이 있습니다. 공유 처리량과 전용 처리량은 계획 단계에서 수행해야 하는 또 다른 중요한 변경할 수 없는 결정입니다. 자세한 내용은 변경할 수 없는 결정 사항 섹션의 지침을 따르세요.

변경할 수 없는 결정

Azure Cosmos DB 리소스가 만들어지면 다음 Azure Cosmos DB 구성 선택 항목을 수정하거나 실행 취소할 수 없습니다. 따라서 마이그레이션을 시작하기 전에 마이그레이션 전 계획 중에 이러한 구성을 올바르게 선택해야 합니다.

소유 비용

처리량 예측

  • Azure Cosmos DB에서 처리량은 사전에 프로비저닝되며 초당 RU(요청 단위)로 측정됩니다. VM 또는 온-프레미스 서버와 달리 RU는 언제든지 쉽게 확장 및 축소할 수 있습니다. 프로비저닝된 RU의 수를 즉시 변경할 수 있습니다. 자세한 내용은 Azure Cosmos DB의 요청 단위를 참조하세요.

  • Azure Cosmos DB 용량 계산기를 사용하여 사용해야 하는 요청 단위 수를 결정할 수 있습니다. 이 숫자는 데이터베이스 계정 구성, 데이터 양, 문서 크기 및 초당 필요한 읽기/쓰기 수를 기반으로 합니다.

  • 다음은 필수 RU의 수에 영향을 주는 주요 요소입니다.

    • 문서 크기: 항목/문서의 크기가 증가함에 따라 항목/문서를 읽거나 쓰는 데 사용되는 RU 수도 증가합니다.

    • 문서 속성 수: 문서를 만들거나 업데이트하는 데 사용된 RU 수는 해당 속성의 수, 복잡성 및 길이와 관련이 있습니다. 인덱싱되는 속성 수를 제한하면 쓰기 작업에 대한 요청 단위 사용을 줄일 수 있습니다.

    • 쿼리 패턴: 쿼리의 복잡성은 쿼리에서 사용하는 요청 단위 수에 영향을 줍니다.

  • 쿼리 비용을 이해하는 가장 좋은 방법은 Azure Cosmos DB의 샘플 데이터를 사용하고, getLastRequestStastistics 명령을 통해 MongoDB 셸에서 샘플 쿼리를 실행하여 요청 요금을 가져오는 것입니다. 그러면 사용된 RU 수가 출력됩니다.

    db.runCommand({getLastRequestStatistics: 1})
    

    *이 명령은 다음 예제와 비슷한 JSON 문서를 출력합니다.

    {
      "_t": "GetRequestStatisticsResponse",
      "ok": 1,
      "CommandName": "find",
      "RequestCharge": 10.1,
      "RequestDurationInMilliSeconds": 7.2
    }
    
  • 진단 설정을 사용하여 Azure Cosmos DB에 대해 실행되는 쿼리의 빈도와 패턴을 파악할 수도 있습니다. 진단 로그의 결과는 스토리지 계정, EventHub 인스턴스 또는 Azure Log Analytics로 보낼 수 있습니다.

마이그레이션 전 실행 계획

마지막으로, 이제 기존 데이터 자산에 대한 보기와 새 Azure Cosmos DB 데이터 자산에 대한 디자인이 있으므로 마이그레이션 프로세스를 엔드투엔드 방식으로 실행하는 방법을 계획할 준비가 되었습니다. 다시 한 번, 리소스별 수준에서 계획하고, 열을 스프레드시트에 추가하여 이 섹션에 포함된 로지스틱 차원을 캡처합니다.

실행 계획

  • MongoDB에서 Azure Cosmos DB에 각 기존 리소스를 마이그레이션하는 책임을 할당합니다. 마이그레이션을 완료하기 위해 팀 리소스를 적용하는 방법은 사용자에게 달려 있습니다. 소규모 마이그레이션의 경우 한 팀이 전체 마이그레이션을 시작하고 진행 상황을 모니터링할 수 있습니다. 대규모 마이그레이션의 경우 해당 리소스를 마이그레이션하고 모니터링하기 위해 리소스별로 팀 멤버에게 책임을 할당할 수 있습니다.

  • 리소스 마이그레이션에 대한 책임을 할당했으면 이제 마이그레이션에 적합한 마이그레이션 도구를 선택해야 합니다. 소규모 마이그레이션의 경우 MongoDB 네이티브 도구 또는 Azure DMS와 같은 하나의 마이그레이션 도구를 사용하여 모든 리소스를 한 번의 마이그레이션으로 마이그레이션할 수 있습니다. 대규모 마이그레이션 또는 특별한 요구 사항이 있는 마이그레이션의 경우 리소스별 세분 단위로 마이그레이션 도구를 선택할 수 있습니다.

    • 사용할 마이그레이션 도구를 계획하기 전에 사용 가능한 옵션을 직접 아는 것이 좋습니다. Azure Cosmos DB의 API for MongoDB에 대한 Azure Database Migration Service는 완전 관리형 호스팅 플랫폼, 마이그레이션 모니터링 옵션 및 자동 제한 처리를 제공하여 데이터 마이그레이션을 간소화하는 메커니즘을 제공합니다. 전체 옵션 목록은 다음과 같습니다.

      마이그레이션 유형 솔루션 고려 사항
      온라인 Azure Database Migration Service • Azure Cosmos DB용 대량 실행기 라이브러리를 사용합니다.
      • 대량 데이터 세트에 적합하고 라이브 변경 내용 복제를 처리
      • 다른 MongoDB 원본에서만 작동합니다.
      오프라인 Azure Database Migration Service • Azure Cosmos DB용 대량 실행기 라이브러리를 사용합니다.
      • 대량 데이터 세트에 적합하고 라이브 변경 내용 복제를 처리
      • 다른 MongoDB 원본에서만 작동합니다.
      오프라인 Azure 데이터 팩터리 • Azure Cosmos DB용 대량 실행기 라이브러리를 사용합니다.
      • 대량 데이터 세트에 적합
      • 간편한 설정 및 여러 소스 지원
      • 검사점이 부족하다는 것은 마이그레이션 중에 문제가 발생하면 전체 마이그레이션 프로세스를 다시 시작해야 함을 의미합니다.
      • 배달 못한 편지 큐가 없으면 일부 잘못된 파일이 전체 마이그레이션 프로세스를 중지할 수 있음을 의미합니다.
      • 특정 데이터 원본에 대한 읽기 처리량을 늘리려면 사용자 지정 코드가 필요합니다.
      오프라인 기존 Mongo 도구(mongodump, mongorestore, Studio3T) • 간편한 설정 및 통합
      • 제한에 대한 사용자 지정 처리가 필요합니다.
      오프라인/온라인 Azure Databricks 및 Spark • 마이그레이션 속도 및 데이터 변환에 대한 모든 권한
      • 사용자 지정 코드가 필요합니다
    • 리소스에서 오프라인 마이그레이션을 허용할 수 있는 경우 아래 다이어그램을 사용하여 적절한 마이그레이션 도구를 선택합니다.

      도구 크기에 따른 오프라인 마이그레이션 도구 사용의 다이어그램

    • 리소스에 온라인 마이그레이션이 필요한 경우 아래 다이어그램을 사용하여 적절한 마이그레이션 도구를 선택합니다.

      턴키 또는 사용자 지정 솔루션 선호도에 따른 온라인 마이그레이션 도구 사용의 다이어그램

    • 마이그레이션 솔루션 개요 및 데모 비디오를 시청합니다.

  • 각 리소스에 대한 마이그레이션 도구가 선택되면 다음 단계는 마이그레이션할 리소스의 우선 순위를 지정하는 것입니다. 우선 순위를 지정하면 일정에 따라 마이그레이션을 유지할 수 있습니다. 이동하는 데 가장 많은 시간이 필요한 리소스를 마이그레이션하는 데 우선 순위를 지정하는 것이 좋습니다. 이러한 리소스를 먼저 마이그레이션하면 완료를 향한 가장 큰 진전이 이루어집니다. 또한 이러한 시간 소모적인 마이그레이션에는 일반적으로 더 많은 데이터가 필요하므로 마이그레이션 도구에 대한 리소스 집약도가 더 높습니다. 따라서 마이그레이션 파이프라인 관련 문제가 조기에 노출될 가능성이 더 높습니다. 이렇게 하면 마이그레이션 파이프라인의 문제로 인해 일정이 지연될 가능성이 최소화됩니다.

  • 마이그레이션이 시작되면 진행 상황을 모니터링하는 방법을 계획합니다. 팀 간의 데이터 마이그레이션 작업을 조정하는 경우 우선 순위가 높은 마이그레이션이 진행되는 상황을 포괄적으로 볼 수 있도록 정기적인 팀 동기화 주기를 계획합니다.

지원되는 마이그레이션 시나리오

가장 좋은 MongoDB 마이그레이션 도구를 선택하는 것은 마이그레이션 시나리오에 따라 달라집니다.

마이그레이션 유형

각 마이그레이션 시나리오에 호환되는 도구 목록은 다음과 같습니다.

원본 대상 프로세스 권장 사항
• MongoDB 온-프레미스 클러스터
• IaaS VM의 MongoDB 클러스터
• MongoDB Atlas 클러스터 - 오프라인
Azure Cosmos DB Mongo API • <10GB 데이터: MongoDB 네이티브 도구
• < 1TB 데이터: Azure DMS
• > 1TB 데이터: Spark
• MongoDB 온-프레미스 클러스터
• IaaS VM의 MongoDB 클러스터
• MongoDB Atlas 클러스터 - 온라인
Azure Cosmos DB Mongo API • < 1TB 데이터: Azure DMS
• >1TB 데이터: Spark + Mongo ChangeStream
• 마이그레이션 중에 스키마를 변경해야 합니다.
• 앞서 언급한 도구보다 더 많은 유연성이 필요함
Azure Cosmos DB Mongo API • ADF는 DMS보다 더 유연하고, 마이그레이션 중에 스키마 수정을 지원하며, 대부분의 원본/대상 조합을 지원합니다.
• DMS는 규모 측면에서 더 낫습니다(예: 더 빠른 마이그레이션).
• JSON 파일 Azure Cosmos DB Mongo API • MongoDB 네이티브 도구, 특히 mongoimport
• CSV 파일 Azure Cosmos DB Mongo API • MongoDB 네이티브 도구, 특히 mongoimport
• BSON 파일 Azure Cosmos DB Mongo API • MongoDB 네이티브 도구, 특히 mongorestore

MongoDB 버전에 대한 도구 지원

특정 MongoDB 버전에서 마이그레이션하는 경우 각 버전에 지원되는 도구는 다음과 같습니다.

MongoDB 원본 버전 Azure Cosmos DB for MongoDB 대상 버전 지원되는 도구 지원되지 않는 도구
<2.x, >4.0 3.2, 3.6, 4.0 MongoDB 네이티브 도구, Spark DMS, ADF
3.2, 3.6, 4.0 3.2, 3.6, 4.0 MongoDB 네이티브 도구, DMS, ADF, Spark 없음

마이그레이션 후

마이그레이션 전 단계에서는 앱 마이그레이션 및 마이그레이션 후 최적화를 위해 수행할 단계를 계획하는 데 약간의 시간을 할애합니다.

  • 마이그레이션 후 단계에서는 기존 MongoDB 데이터 자산 대신 Azure Cosmos DB를 사용하기 위해 애플리케이션의 컷오버를 실행합니다.
  • 인덱싱, 글로벌 배포, 일관성 및 기타 변경 가능한 Azure Cosmos DB 속성을 리소스 수준별로 계획하기 위해 최선을 다합니다. 그러나 이러한 Azure Cosmos DB 구성 설정은 나중에 수정할 수 있습니다. 따라서 이러한 설정은 나중에 조정해야 합니다. 이러한 변경 가능한 구성은 마이그레이션 후에 적용합니다.
  • 마이그레이션 후 가이드는 Azure Cosmos DB API for MongoDB 사용 시 마이그레이션 후 최적화 단계를 참조하세요.

다음 단계