데스크톱 데이터 마이그레이션 도구를 사용하여 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로 데이터 마이그레이션을 수행합니다.
필수 조건
- 기존 Azure Cosmos DB API for NoSQL 계정.
- 기존 Azure 구독이 있는 경우 새 계정을 만듭니다.
- Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
- 또는 커밋하기 전에 Azure Cosmos DB 평가판을 사용해 볼 수 있습니다.
- 최신 버전의 Azure CLI.
- .NET 6.0 이상.
데스크톱 데이터 마이그레이션 도구 설치
먼저 GitHub 리포지토리에서 최신 버전의 데스크톱 데이터 마이그레이션 도구를 설치합니다.
참고 항목
데스크톱 데이터 마이그레이션 도구를 사용하려면 로컬 컴퓨터에 .NET 6.0 이상이 필요합니다.
브라우저에서 리포지토리의 릴리스 섹션인 azurecosmosdb/data-migration-desktop-tool/releases로 이동합니다.
플랫폼에 맞는 최신 압축 폴더를 다운로드합니다. win-x64, mac-x64 및 linux-x64 플랫폼에 대한 압축 폴더가 있습니다.
로컬 컴퓨터의 설치 위치에 파일을 추출합니다.
(선택 사항) 데스크톱 데이터 마이그레이션 도구를 로컬 컴퓨터의
PATH
환경 변수에 추가합니다.
마이그레이션 대상 준비
다음으로, Azure Cosmos DB for NoSQL 계정에 대상 데이터베이스와 컨테이너를 만듭니다.
새 터미널을 엽니다. 아직 로그인하지 않은 경우 Azure CLI에 로그인합니다.
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>"
az cosmosdb sql database create
를 사용하여 새 데이터베이스를 만듭니다. 새 데이터베이스의 이름을cosmicworks
로 지정하고 400RU/s의 공유 처리량으로 데이터베이스를 구성합니다.az cosmosdb sql database create \ --resource-group $resourceGroupName \ --account-name $accountName \ --name cosmicworks \ --throughput 400
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"
az cosmosdb keys list
를 사용하여 계정에 대한 키 목록에서 기본 연결 문자열을 찾습니다.az cosmosdb keys list \ --resource-group $resourceGroupName \ --name $accountName \ --type connection-strings
기본 연결 문자열 값을 기록합니다. 나중에 도구를 사용하여 데이터를 마이그레이션할 때 이 자격 증명을 사용합니다.
마이그레이션 작업 수행
이제 JSON 배열에서 새로 만든 Azure Cosmos DB for NoSQL 컨테이너로 데이터를 마이그레이션합니다.
로컬 컴퓨터의 빈 디렉터리로 이동합니다. 해당 디렉터리 내에 migrationsettings.json이라는 새 파일을 만듭니다.
JSON 파일 내에서 빈 JSON 개체를 새로 만듭니다.
{}
json
값을 사용하여Source
라는 새 속성을 만듭니다. 빈 개체를 값으로 사용하여SourceSettings
라는 다른 새 속성을 만듭니다.{ "Source": "json", "SourceSettings": {} }
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" } }
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": { } }
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>" } }
cosmicworks
,products
및/category
를 각각 해당 값으로 사용하여Database
,Container
및PartitionKeyPath
속성을 추가합니다.{ "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" } }
migrationsettings.json 파일을 저장합니다.
새 터미널을 열고 migrationsettings.json 파일이 포함된 디렉터리로 이동합니다.
dmt
명령을 사용하여 데스크톱 데이터 마이그레이션 도구를 실행합니다.dmt
참고 항목
PATH
환경 변수에 설치 경로를 추가하지 않은 경우dmt
실행 파일의 전체 경로를 지정해야 할 수도 있습니다.이제 이 도구는 마이그레이션에 사용되는 원본 및 싱크를 출력합니다.
Using JSON Source Using Cosmos-nosql Sink