다음을 통해 공유


Azure Cosmos DB의 컨테이너 복사 작업 만들기 및 관리(미리 보기)

복사 작업은 Azure Cosmos DB 계정에서 컨테이너 복사본을 만드는 데 도움이 됩니다.

이 문서에서는 Azure CLI 명령을 사용하여 복사 작업을 만들고, 모니터링하고, 관리하는 방법을 설명합니다.

필수 조건

  • 포털 Cloud Shell을 사용하여 컨테이너 복사 명령을 실행할 수 있습니다. 또는 명령을 로컬로 실행할 수 있습니다. Azure CLI가 머신에 다운로드 및 설치되어 있는지 확인합니다.
  • 현재 컨테이너 복사는 이러한 지역에서만 지원됩니다. 계정의 쓰기 지역이 이 목록에 속하는지 확인하세요.
  • 컨테이너 복사 명령이 포함된 Azure Cosmos DB 미리 보기 확장을 설치합니다.
    az extension add --name cosmosdb-preview
    

셸 변수 설정

먼저 각 개별 스크립트에서 사용할 모든 변수를 설정합니다.

$sourceSubId = "<source-subscription-id>" 
$destinationSubId = "<destination-subscription-id>" 
$sourceAccountRG = "<source-resource-group-name>"
$destinationAccountRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceDatabase = ""
$sourceContainer = ""
$destinationDatabase = ""
$destinationContainer = ""

읽기 권한 할당

참고 항목

동일한 Azure Cosmos DB 계정 내에서 데이터를 복사하는 경우에는 이 단계가 필요하지 않습니다.

한 계정의 컨테이너에서 다른 계정의 컨테이너로 데이터를 복사하는 동안 복사 작업을 수행하려면 원본 컨테이너에서 대상 계정의 ID에 대한 읽기 권한을 부여해야 합니다. 다음 단계에 따라 대상 계정에 필요한 읽기 권한을 할당합니다.

시스템 관리 ID 사용

  1. 대상 구독 컨텍스트 설정
    az account set --subscription $destinationSubId
    
  2. 대상 계정에 시스템 ID 추가
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG
    $principalId = ($identityOutput | ConvertFrom-Json).principalId
    
  3. 대상 계정에서 기본 ID 설정
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
    
  4. 원본 구독 컨텍스트 설정
    az account set --subscription $sourceSubId
    
  5. 원본 계정에 역할 할당 추가
    # Read-only access role
    $roleDefinitionId = "00000000-0000-0000-0000-000000000001" 
    az cosmosdb sql role assignment create --account-name $sourceAccount --resource-group $sourceAccountRG --role-definition-id $roleDefinitionId --scope "/" --principal-id $principalId
    
  6. 대상 구독 컨텍스트 초기화
    az account set --subscription $destinationSubId
    

사용자가 할당한 관리 ID 사용

  1. 사용자가 할당한 관리 ID 변수 할당
    $userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
    
  2. 대상 구독 컨텍스트 설정
    az account set --subscription $destinationSubId
    
  3. 대상 계정에 사용자가 할당한 관리 ID 추가
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId
    $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
    
  4. 대상 계정에서 기본 ID 설정
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
    
  5. 원본 구독 컨텍스트 설정
    az account set --subscription $sourceSubId
    
  6. 원본 계정에 역할 할당 추가
    $roleDefinitionId = "00000000-0000-0000-0000-000000000001"  # Read-only access role
    az cosmosdb sql role assignment create --account-name $sourceAccount --resource-group $sourceAccountRG --role-definition-id $roleDefinitionId --scope "/" --principal-id $principalId
    
  7. 대상 구독 컨텍스트 초기화
    az account set --subscription $destinationSubId
    

복사 작업 만들기

az cosmosdb copy create `
    --resource-group $destinationAccountRG `
    --job-name $jobName `
    --dest-account $destinationAccount `
    --src-account $sourceAccount `
    --dest-nosql database=$destinationDatabase container=$destinationContainer `
    --src-nosql database=$sourceDatabase container=$sourceContainer
    --mode Online

진행 상황 모니터링

아래 명령을 사용하여 진행률을 모니터링합니다.

az cosmosdb copy show `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName
  1. 총 개수 – 지정된 시간에 원본 컨테이너의 총 변경 횟수(총 문서 + 새 변경 내용)를 나타냅니다.
  2. 처리된 수 – 복사 작업에서 처리된 원본 컨테이너의 변경 피드에서 들어오는 총 이벤트 수를 나타냅니다.

복사 작업 완료

  1. 처리된 수가 총 개수보다 크거나 같으면 원본 컨테이너에서 업데이트를 해제하고 5-10분 동안 기다렸다가 나머지 변경 내용을 플러시합니다.
  2. 완료 API를 실행하여 복사 작업 및 무료 컴퓨팅 리소스를 완료합니다. 그러면 나머지 변경 내용(있는 경우)도 대상 컨테이너에 씁니다.
    az cosmosdb copy complete `
        --resource-group $destinationAccountRG `
        --account-name $destinationAccount `
        --job-name $jobName
  1. 필요한 경우 새(대상) 컨테이너 사용을 시작하도록 클라이언트 애플리케이션을 업데이트합니다.

셸 변수 설정

먼저 각 개별 스크립트에서 사용할 모든 변수를 설정합니다.

$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceDatabase = ""
$sourceCollection = ""
$destinationDatabase = ""
$destinationCollection = ""

복사 작업 만들기

Azure Cosmos DB API for MongoDB 계정 내에서 컬렉션을 복사하는 작업을 만듭니다.

az cosmosdb copy create `
    --resource-group $destinationRG `
    --job-name $jobName `
    --dest-account $destinationAccount `
    --src-account $sourceAccount `
    --dest-mongo database=$destinationDatabase collection=$destinationCollection `
    --src-mongo database=$sourceDatabase collection=$sourceCollection 

참고 항목

--job-name은 계정 내의 각 작업에 대해 고유해야 합니다.

셸 변수 설정

먼저 각 개별 스크립트에서 사용할 모든 변수를 설정합니다.

$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceKeySpace = ""
$sourceTable = ""
$destinationKeySpace = ""
$destinationTable = ""

복사 작업 만들기

Apache Cassandra용 Azure Cosmos DB 계정 내에서 테이블을 복사하는 작업을 만듭니다.

az cosmosdb copy create `
    --resource-group $destinationRG `
    --job-name $jobName `
    --dest-account $destinationAccount `
    --src-account $sourceAccount `
    --dest-cassandra keyspace=$destinationKeySpace table=$destinationTable `
    --src-cassandra keyspace=$sourceKeySpace table=$sourceTable 

참고 항목

--job-name은 계정 내의 각 작업에 대해 고유해야 합니다.

복사 작업 관리

복사 작업의 진행률 모니터링

복사 작업의 진행률 및 상태를 확인합니다.

az cosmosdb copy show `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

계정에서 만든 모든 복사 작업 나열

계정에서 만든 모든 복사 작업을 나열하려면 다음을 수행합니다.

az cosmosdb copy list `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount

복사 작업 일시 중지

진행 중인 복사 작업을 일시 중지하려면 다음 명령을 사용할 수 있습니다.

az cosmosdb copy pause `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

복사 작업 다시 시작

진행 중인 복사 작업을 다시 시작하려면 다음 명령을 사용할 수 있습니다.

az cosmosdb copy resume `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

복사 작업 취소

진행 중인 복사 작업을 취소하려면 다음 명령을 사용할 수 있습니다.

az cosmosdb copy cancel `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

복사 문제에 대한 지원 받기

복사 작업과 관련된 문제의 경우 Azure Portal에서 새 지원 요청을 발생합니다. 문제 유형을 ‘데이터 마이그레이션’으로 설정하고 문제 하위 유형을 ‘컨테이너 복사’로 설정합니다.

다음 단계

  • 컨테이너 복사 작업에 대한 자세한 내용은 복사 작업을 참조 하세요.