자습서: Azure Database Migration Service를 사용하여 MongoDB를 Azure Cosmos DB for MongoDB RU로 온라인 마이그레이션

적용 대상: MongoDB

Important

마이그레이션 단계를 수행하기 전에 이 전체 가이드를 읽어보세요. Azure Database Migration Service는 현재 Azure Cosmos DB for MongoDB vCore 계정으로의 마이그레이션을 지원하지 않습니다.

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

Diagram of migration steps.

DMS를 사용하여 MongoDB에서 Azure Cosmos DB로 온라인 데이터 마이그레이션 개요

Azure Database Migration Service를 사용하여 MongoDB의 온-프레미스 또는 클라우드 인스턴스에서 MongoDB용 Azure Cosmos DB로 데이터베이스의 온라인(최소 가동 중지 시간) 마이그레이션을 수행할 수 있습니다.

이 자습서에서는 Azure Database Migration Service를 사용하여 MongoDB 데이터를 Azure Cosmos DB로 마이그레이션하는 것과 관련된 단계를 보여 줍니다.

  • Azure Database Migration Service 인스턴스를 만듭니다.
  • 마이그레이션 프로젝트를 만듭니다.
  • 원본을 지정합니다.
  • 대상을 지정합니다.
  • 대상 데이터베이스에 매핑을 선택합니다.
  • 마이그레이션을 실행합니다.
  • 마이그레이션을 모니터링합니다.
  • Azure Cosmos DB에서 데이터를 확인합니다.
  • 준비가 되면 마이그레이션을 완료합니다.

이 자습서에서는 Azure Database Migration Service를 통해 가동 중지 시간을 최소화하면서 Azure 가상 머신에서 호스트되는 MongoDB의 데이터 세트를 Azure Cosmos DB for MongoDB로 마이그레이션합니다. MongoDB 원본이 아직 설정되지 않은 경우 Azure에서 Windows VM에 MongoDB 설치 및 구성을 참조하세요.

참고 항목

Azure Database Migration Service를 사용하여 온라인 마이그레이션을 수행하려면 프리미엄 가격 책정 계층에 따라 인스턴스를 만들어야 합니다.

Important

최적의 마이그레이션 환경을 위해 Microsoft는 대상 데이터베이스와 동일한 Azure 지역에서 Azure Database Migration Service의 인스턴스를 만드는 것을 권장합니다. 지역 또는 지역에서 데이터를 이동하면 마이그레이션 프로세스가 느려질 수 있습니다.

Azure Database Migration Service에서 데이터베이스를 오프라인으로 또는 온라인 상태에서 마이그레이션할 수 있습니다. 오프라인 마이그레이션의 경우 마이그레이션을 시작할 때부터 애플리케이션 가동 중지 시간이 시작됩니다. 가동 중지 시간을 마이그레이션 후 새 환경으로 전환하는 데 걸리는 시간으로 제한하려면 온라인 마이그레이션을 사용합니다. 가동 중지 시간이 허용 가능한지 확인하기 위해 오프라인 마이그레이션을 테스트하는 것이 좋습니다. 예상 가동 중지 시간이 허용되지 않는 경우 온라인 마이그레이션을 수행합니다.

이 문서에서는 MongoDB에서 Azure Cosmos DB for MongoDB로의 온라인 마이그레이션에 대해 설명합니다. 오프라인 마이그레이션 은 DMS를 사용하여 오프라인으로 MongoDB를 Azure Cosmos DB for MongoDB로 마이그레이션을 참조하세요.

필수 조건

이 자습서를 완료하려면 다음을 수행해야 합니다.

  • 처리량 예측, 파티션 키 선택 및 인덱싱 정책과 같은 마이그레이션 전 단계를 완료합니다.

  • MongoDB용 Azure Cosmos DB 계정을 만들고 SSR(서버 쪽 다시 시도)이 사용하도록 설정되어 있는지 확인합니다.

    참고 항목

    서버리스 모드로 프로비전된 Azure Cosmos DB for MongoDB 계정으로 마이그레이션하는 경우 DMS는 현재 지원되지 않습니다.

  • Azure Resource Manager 배포 모델을 사용하여 Azure Database Migration Service용 Microsoft Azure Virtual Network를 만듭니다. 그러면 ExpressRoute 또는 VPN을 사용하여 온-프레미스 원본 서버에 사이트 간 연결이 제공됩니다.

    참고 항목

    가상 네트워크를 설정하는 동안 Microsoft에 대한 네트워크 피어링과 함께 ExpressRoute를 사용하는 경우 서비스를 프로비전할 서브넷에 다음 서비스 엔드포인트 를 추가합니다.

    • 대상 데이터베이스 엔드포인트(예: SQL 엔드포인트, Azure Cosmos DB 엔드포인트 등)
    • 스토리지 엔드포인트
    • Service Bus 엔드포인트

    Azure Database Migration Service에는 인터넷 연결이 없으므로 이 구성이 필요합니다.

  • 가상 네트워크 NSG(네트워크 보안 그룹) 규칙이 53, 443, 445, 9354 및 10000-20000 통신 포트를 차단하지 않는지 확인합니다. 가상 네트워크 NSG 트래픽 필터링에 대한 자세한 내용은 네트워크 보안 그룹을 사용하여 네트워크 트래픽 필터링 문서를 참조하세요.

  • Azure Database Migration Service에서 기본적으로 27017 TCP 포트인 원본 MongoDB 서버에 액세스할 수 있도록 Windows 방화벽을 엽니다.

  • 원본 데이터베이스 앞에 방화벽 어플라이언스를 사용하는 경우 Azure Database Migration Service에서 원본 데이터베이스에 액세스하여 마이그레이션할 수 있도록 허용하는 방화벽 규칙을 추가해야 합니다.

효율적인 마이그레이션을 위해 Azure Cosmos DB 서버 쪽 재시도 구성

MongoDB에서 Azure Cosmos DB로 마이그레이션하는 고객은 리소스 거버넌스 기능을 활용하므로 프로비전된 처리량 RU/s를 완전히 활용할 수 있습니다. Azure Cosmos DB는 해당 요청이 컨테이너 프로비전된 RU/s를 초과하는 경우 마이그레이션 과정에서 지정된 Data Migration Service 요청을 제한할 수 있습니다. 그런 다음 해당 요청을 다시 시도해야 합니다. Data Migration Service는 재시도를 수행할 수 있지만 Data Migration Service와 Azure Cosmos DB 간의 네트워크 홉과 관련된 왕복 시간은 해당 요청의 전체 응답 시간에 영향을 줍니다. 제한된 요청에 대한 응답 시간을 개선하면 마이그레이션에 필요한 총 시간이 단축될 수 있습니다. Azure Cosmos DB의 서버 쪽 재시도 기능을 사용하면 서비스가 스로틀 오류 코드를 가로채고 왕복 시간이 훨씬 낮아 다시 시도하여 요청 응답 시간이 크게 향상됩니다.

Azure Cosmos DB 포털의 기능 블레이드에서 서버 쪽 재시도 기능을 찾을 수 있습니다.

Screenshot of MongoDB Server-Side Retry feature.

사용 안 함경우 아래와 같이 사용하도록 설정하는 것이 좋습니다.

Screenshot of MongoDB Server-Side Retry enable.

리소스 공급자 등록

Database Migration Service의 첫 번째 인스턴스를 만들기 전에 Microsoft.DataMigration 리소스 공급자를 등록합니다.

  1. Azure Portal에 로그인합니다. 구독을 검색하고 선택합니다.

    Show portal subscriptions

  2. Azure Database Migration Service의 인스턴스를 만들려는 구독을 선택한 다음, 리소스 공급자를 선택합니다.

    Show resource providers

  3. 마이그레이션을 검색한 다음, Microsoft.DataMigration에 대한 등록을 선택합니다.

    Register resource provider

인스턴스 만들기

  1. Azure Portal에서 + 리소스 만들기를 선택하고, Azure Database Migration Service를 검색한 다음, 드롭다운 목록에서 Azure Database Migration Service를 선택합니다.

    Azure Marketplace

  2. Azure Database Migration Service 화면에서 만들기를 선택합니다.

    Create Azure Database Migration Service instance

  3. Migration Service 생성 화면에서 서비스, 구독, 신규 또는 기존 리소스 그룹의 이름을 지정합니다.

  4. Azure Database Migration Service의 인스턴스를 만들 위치를 선택합니다.

  5. 기존 가상 네트워크를 선택하거나 새 가상 네트워크를 만듭니다.

    가상 네트워크는 원본 MongoDB 인스턴스 및 대상 Azure Cosmos DB 계정에 대한 액세스 권한이 있는 Azure Database Migration Service를 제공합니다.

    Azure Portal에서 가상 네트워크를 만드는 방법에 대한 자세한 내용은 Azure Portal을 사용하여 가상 네트워크 만들기 문서를 참조하세요.

  6. 프리미엄 가격 책정 계층에서 SKU를 선택합니다.

    참고 항목

    온라인 마이그레이션은 프리미엄 계층을 사용하는 경우에만 지원됩니다. 비용 및 가격 책정 계층에 대한 자세한 내용은 가격 책정 페이지를 참조하세요.

    Configure Azure Database Migration Service instance settings

  7. 만들기를 선택하여 서비스를 만듭니다.

마이그레이션 프로젝트 생성

서비스를 만든 후 Azure Portal 내에서 찾아서 연 다음 새 마이그레이션 프로젝트를 만듭니다.

  1. Azure Portal에서 모든 서비스를 선택하고 Azure Database Migration Service를 검색한 다음, Azure Database Migration Services를 선택합니다.

    Locate all instances of Azure Database Migration Service

  2. Azure Database Migration Services 화면에서 만든 Azure Database Migration Service 인스턴스의 이름을 검색한 다음 인스턴스를 선택합니다.

    또는 Azure Portal의 검색 창에서 Azure Database Migration Service 인스턴스를 검색할 수 있습니다.

    Use the Search pane in the Azure portal

  3. + 새 마이그레이션 프로젝트를 선택합니다.

  4. 새 마이그레이션 프로젝트 화면에서 프로젝트의 이름을 지정하고 원본 서버 유형 텍스트 상자에서 MongoDB를 선택하고 대상 서버 유형 텍스트 상자에서 MongoDB용 Azure Cosmos DB를 선택한 다음 작업 유형 선택에서 온라인 데이터 마이그레이션 [미리 보기]를 선택합니다.

    Create Database Migration Service project

  5. 저장을 선택한 다음 만들기 및 실행 작업을 선택하여 프로젝트를 만들고 마이그레이션 작업을 실행합니다.

원본 세부 정보 지정

  1. 원본 세부 정보 화면에서 원본 MongoDB 서버에 대한 연결 세부 정보를 지정합니다.

    Important

    Azure Database Migration Service는 Azure Cosmos DB를 원본으로 지원하지 않습니다.

    원본에 연결하는 세 가지 모드가 있습니다.

    • 표준 모드 - 정규화된 도메인 이름이나 IP 주소, 포트 번호 및 연결 자격 증명을 수락합니다.

    • 커넥트ion 문자열 URI 형식 문서에 설명된 대로 MongoDB 커넥트ion 문자열을 허용하는 커넥트ion 문자열 모드입니다.

    • Blob 컨테이너 SAS URL을 허용하는 Azure Storage의 데이터입니다. Blob 컨테이너에 MongoDB bsondump 도구에서 생성된 BSON 덤프가 있는 경우 Blob에 BSON 덤프가 포함된 Blob을 선택하고 컨테이너에 JSON 파일이 포함되어 있으면 선택 해제합니다.

      이 옵션을 선택할 경우 해당 스토리지 계정 연결 문자열이 다음 형식으로 나타나는지 확인하세요.

      https://blobnameurl/container?SASKEY
      

      또한 Azure Storage의 형식 덤프 정보에 기반하여 다음 세부 정보를 유념해 두세요.

      • BSON 덤프의 경우 데이터 파일이 collection.bson 형식의 포함된 데이터베이스 이름을 따서 명명된 폴더에 배치되도록 Blob 컨테이너 내의 데이터는 bsondump 형식이어야 합니다. 메타데이터 파일(있는 경우)의 이름은 collection.metadata.json 형식을 사용하여 이름이 지정되어야 합니다.

      • JSON 덤프의 경우 Blob 컨테이너의 파일은 포함한 데이터베이스를 따라 이름이 지정된 폴더에 배치되어야 합니다. 각 데이터베이스 폴더 내에서 데이터 파일은 "data"라는 하위 폴더에 배치되고 형식 컬렉션.json 사용하여 이름을 지정해야 합니다. 메타데이터 파일(있는 경우)은 "메타데이터"라는 하위 폴더에 배치하고 동일한 형식인 컬렉션.json 사용하여 이름을 지정해야 합니다. 메타데이터 파일은 MongoDB bsondump 도구에서 생성한 것과 동일한 형식이어야 합니다.

    Important

    MongoDB 서버에서 자체 서명된 인증서를 사용하는 것이 좋습니다. 그러나 사용하는 경우 연결 문자열 모드를 사용하여 서버에 연결하고 연결 문자열 ""가 있는지 확인하세요.

    &sslVerifyCertificate=false
    

    DNS 이름 확인이 불가능한 경우 IP 주소를 사용할 수 있습니다.

    Specify source details

  2. 저장을 선택합니다.

    참고 항목

    원본이 복제본(replica) 집합인 경우 원본 서버 주소는 주 서버 주소이고 원본이 분할된 MongoDB 클러스터인 경우 라우터여야 합니다. 분할된 MongoDB 클러스터의 경우 Azure Database Migration Service는 클러스터의 개별 분할된 데이터베이스에 연결할 수 있어야 합니다. 이 경우 더 많은 컴퓨터에서 방화벽을 열어야 할 수 있습니다.

대상 세부 정보 지정

  1. 마이그레이션 대상 세부 정보 화면에서 대상 Azure Cosmos DB 계정에 대한 연결 세부 정보를 지정합니다. 이 계정은 MongoDB 데이터를 마이그레이션할 MongoDB 계정에 대해 미리 프로비전된 Azure Cosmos DB입니다.

    Specify target details

  2. 저장을 선택합니다.

대상 데이터베이스에 매핑

  1. 대상 데이터베이스에 매핑 화면에서 마이그레이션을 위해 원본 및 대상 데이터베이스를 매핑합니다 .

    대상 데이터베이스에 원본 데이터베이스와 동일한 데이터베이스 이름이 포함된 경우 Azure Database Migration Service는 기본적으로 대상 데이터베이스를 선택합니다.

    데이터베이스 이름 옆에 만들기 문자열이 나타나면 Azure Database Migration Service에서 대상 데이터베이스를 찾지 못했음을 나타내며, 서비스에서 데이터베이스를 만듭니다.

    마이그레이션의 이 시점에서 데이터베이스의 처리량을 공유하려면 처리량 RU를 지정합니다. Azure Cosmos DB에서 데이터베이스 수준에서 또는 각 컬렉션에 대해 개별적으로 처리량을 프로비전할 수 있습니다. 처리량은 RU(요청 단위)로 측정됩니다. Azure Cosmos DB 가격 책정에 대해 자세히 알아봅니다.

    Map to target databases

  2. 저장을 선택합니다.

  3. 컬렉션 설정 화면에서 컬렉션 목록을 확장한 다음 마이그레이션할 컬렉션 목록을 검토합니다.

    Azure Database Migration Service는 대상 Azure Cosmos DB 계정에 존재하지 않는 원본 MongoDB 인스턴스에 있는 모든 컬렉션을 자동으로 선택합니다. 이미 데이터가 포함된 컬렉션을 다시 이민하려면 이 화면에서 컬렉션을 명시적으로 선택해야 합니다.

    컬렉션에서 사용할 RU 수를 지정할 수 있습니다. 대부분의 경우 500(분할된 컬렉션의 경우 최소 1,000개)과 4000 사이의 값으로 충분합니다. Azure Database Migration Service는 컬렉션 크기에 따라 스마트 기본값을 제안합니다.

    참고 항목

    필요한 경우 Azure Database Migration Service의 여러 인스턴스를 사용하여 데이터베이스 마이그레이션 및 컬렉션을 병렬로 수행하여 실행 속도를 향상합니다.

    최적의 확장성을 위해 Azure Cosmos DB에서 분할을 활용하도록 분할 키를 지정할 수도 있습니다. 분할/파티션 키를 선택하는 모범 사례를 검토 해야 합니다. 파티션 키가 없는 경우 처리량을 높이기 위해 항상 _id 분할 키로 사용할 수 있습니다.

    Select collections tables

  4. 저장을 선택합니다.

  5. 마이그레이션 요약 화면의 작업 이름 텍스트 상자에서 마이그레이션 작업의 이름을 지정합니다.

    Migration summary

마이그레이션 실행

  • 마이그레이션 실행을 선택합니다.

    마이그레이션 작업 창이 나타나고 활동의 상태가 표시됩니다.

    Activity status

마이그레이션 모니터링

  • 마이그레이션 작업 화면에서 새로 고침을 선택하여 마이그레이션 상태재생 중으로 표시될 때까지 표시 화면을 업데이트합니다.

    참고 항목

    활동을 선택하여 데이터베이스 및 컬렉션 수준 마이그레이션 메트릭에 대한 세부 정보를 가져올 수 있습니다.

    Activity status replaying

Azure Cosmos DB에서 데이터 확인

  1. 원본 MongoDB 데이터베이스를 변경합니다.

  2. Azure Cosmos DB에 커넥트 원본 MongoDB 서버에서 데이터가 복제본(replica) 확인합니다.

    Screenshot that shows where you can verify that the data was replicated.

마이그레이션 완료

  • 원본의 모든 문서를 Azure Cosmos DB 대상에서 사용할 수 있게 된 후 마이그레이션 작업의 상황에 맞는 메뉴에서 마침을 선택하여 마이그레이션을 완료합니다.

    이 작업은 보류 중인 모든 변경 내용 재생을 완료하고 마이그레이션을 완료합니다.

    Screenshot that shows the Finish menu option.

마이그레이션 후 최적화

MongoDB 데이터베이스에 저장된 데이터를 Azure Cosmos DB for MongoDB로 마이그레이션한 후 Azure Cosmos DB에 연결하고 데이터를 관리할 수 있습니다. 인덱싱 정책 최적화, 기본 일관성 수준 업데이트 또는 Azure Cosmos DB 계정에 대한 전역 배포 구성과 같은 다른 마이그레이션 후 최적화 단계를 수행할 수도 있습니다. 자세한 내용은 마이그레이션 후 최적화 문서를 참조하세요.

추가 리소스

다음 단계