데스크톱 데이터 마이그레이션 도구를 사용하여 Azure Cosmos DB로 데이터 마이그레이션

적용 대상: NoSQL MongoDB 테이블

Azure Cosmos DB 데스크톱 데이터 마이그레이션 도구는 Azure Cosmos DB에서 데이터를 가져오거나 내보내는 오픈 소스 명령줄 애플리케이션입니다. 이 도구는 다음을 포함하지만 이에 국한되지 않는 많은 원본 및 싱크 간에 데이터를 마이그레이션할 수 있습니다.

  • Azure Cosmos DB for NoSQL
  • Azure Cosmos DB for MongoDB
  • Azure Cosmos DB for Table
  • Azure Table Storage
  • JSON
  • MongoDB
  • SQL Server

Important

이 가이드에서는 JSON에서 Azure Cosmos DB for NoSQL로 데이터 마이그레이션을 수행합니다.

필수 조건

데스크톱 데이터 마이그레이션 도구 설치

먼저 GitHub 리포지토리에서 최신 버전의 데스크톱 데이터 마이그레이션 도구를 설치합니다.

참고 항목

데스크톱 데이터 마이그레이션 도구를 사용하려면 로컬 컴퓨터에 .NET 6.0 이상이 필요합니다.

  1. 브라우저에서 리포지토리의 릴리스 섹션인 azurecosmosdb/data-migration-desktop-tool/releases로 이동합니다.

  2. 플랫폼에 맞는 최신 압축 폴더를 다운로드합니다. win-x64, mac-x64linux-x64 플랫폼에 대한 압축 폴더가 있습니다.

  3. 로컬 컴퓨터의 설치 위치에 파일을 추출합니다.

  4. (선택 사항) 데스크톱 데이터 마이그레이션 도구를 로컬 컴퓨터의 PATH 환경 변수에 추가합니다.

마이그레이션 대상 준비

다음으로, Azure Cosmos DB for NoSQL 계정에 대상 데이터베이스와 컨테이너를 만듭니다.

  1. 새 터미널을 엽니다. 아직 로그인하지 않은 경우 Azure CLI에 로그인합니다.

  2. Azure Cosmos DB 계정의 이름 및 리소스 그룹에 대한 새 셸 변수를 만듭니다.

    # Variable for Azure Cosmos DB account name
    accountName="<name-of-existing-account>"
    
    # Variable for resource group name
    resourceGroupName="<name-of-existing-resource-group>"
    
  3. az cosmosdb sql database create를 사용하여 새 데이터베이스를 만듭니다. 새 데이터베이스의 이름을 cosmicworks로 지정하고 400RU/s의 공유 처리량으로 데이터베이스를 구성합니다.

    az cosmosdb sql database create \
        --resource-group $resourceGroupName \
        --account-name $accountName \
        --name cosmicworks \
        --throughput 400
    
  4. az cosmosdb sql container create를 사용하여 cosmicworks 데이터베이스 내에 products라는 새 컨테이너를 만듭니다. 새 컨테이너의 파티션 키 경로를 /category로 설정합니다.

    az cosmosdb sql container create \
        --resource-group $resourceGroupName \
        --account-name $accountName \
        --database-name cosmicworks \
        --name products \
        --partition-key-path "/category"
    
  5. az cosmosdb keys list를 사용하여 계정에 대한 키 목록에서 기본 연결 문자열을 찾습니다.

    az cosmosdb keys list \
        --resource-group $resourceGroupName \
        --name $accountName \
        --type connection-strings
    
  6. 기본 연결 문자열 값을 기록합니다. 나중에 도구를 사용하여 데이터를 마이그레이션할 때 이 자격 증명을 사용합니다.

마이그레이션 작업 수행

이제 JSON 배열에서 새로 만든 Azure Cosmos DB for NoSQL 컨테이너로 데이터를 마이그레이션합니다.

  1. 로컬 컴퓨터의 빈 디렉터리로 이동합니다. 해당 디렉터리 내에 migrationsettings.json이라는 새 파일을 만듭니다.

  2. JSON 파일 내에서 빈 JSON 개체를 새로 만듭니다.

    {}
    
  3. json 값을 사용하여 Source라는 새 속성을 만듭니다. 빈 개체를 값으로 사용하여 SourceSettings라는 다른 새 속성을 만듭니다.

    {
      "Source": "json",
      "SourceSettings": {}
    }
    
  4. SourceSettings 개체 내에서 값이 URI https://raw.githubusercontent.com/azure-samples/cosmos-db-migration-sample-data/main/nosql-data.json으로 설정된 FilePath라는 새 속성을 만듭니다.

    {
      "Source": "json",
      "SourceSettings": {
        "FilePath": "https://raw.githubusercontent.com/azure-samples/cosmos-db-migration-sample-data/main/nosql-data.json"
      }
    }
    
  5. cosmos-nosql 값을 사용하여 Sink라는 다른 새 속성을 만듭니다. 또한 빈 개체를 사용하여 SinkSettings라는 속성을 만듭니다.

    {
      "Source": "json",
      "SourceSettings": {
        "FilePath": "https://raw.githubusercontent.com/azure-samples/cosmos-db-migration-sample-data/main/nosql-data.json"
      },
      "Sink": "cosmos-nosql",
      "SinkSettings": {
      }
    }
    
  6. SinkSettings 내에서 이 가이드의 앞부분에서 기록한 기본 연결 문자열을 사용하여 해당 값으로 ConnectionString라는 속성을 만듭니다.

    {
      "Source": "json",
      "SourceSettings": {
        "FilePath": "https://raw.githubusercontent.com/azure-samples/cosmos-db-migration-sample-data/main/nosql-data.json"
      },
      "Sink": "cosmos-nosql",
      "SinkSettings": {
        "ConnectionString": "<connection-string-for-existing-account>"
      }
    }
    
  7. cosmicworks, products/category를 각각 해당 값으로 사용하여 Database, ContainerPartitionKeyPath 속성을 추가합니다.

    {
      "Source": "json",
      "SourceSettings": {
        "FilePath": "https://raw.githubusercontent.com/azure-samples/cosmos-db-migration-sample-data/main/nosql-data.json"
      },
      "Sink": "cosmos-nosql",
      "SinkSettings": {
        "ConnectionString": "<connection-string-for-existing-account>",
        "Database": "cosmicworks",
        "Container": "products",
        "PartitionKeyPath": "/category"
      }
    }
    
  8. migrationsettings.json 파일을 저장합니다.

  9. 새 터미널을 열고 migrationsettings.json 파일이 포함된 디렉터리로 이동합니다.

  10. dmt 명령을 사용하여 데스크톱 데이터 마이그레이션 도구를 실행합니다.

    dmt
    

    참고 항목

    PATH 환경 변수에 설치 경로를 추가하지 않은 경우 dmt 실행 파일의 전체 경로를 지정해야 할 수도 있습니다.

  11. 이제 이 도구는 마이그레이션에 사용되는 원본 및 싱크를 출력합니다.

    Using JSON Source
    Using Cosmos-nosql Sink