Share via


Criar e gerenciar trabalhos de cópia de contêiner no Azure Cosmos DB (Visualização)

APLICA-SE A: NoSQL MongoDB Cassandra

Os trabalhos de cópia de contêiner ajudam a criar cópias offline de contêineres em contas do Azure Cosmos DB.

Este artigo descreve como criar, monitorar e gerenciar trabalhos de cópia de contêiner usando comandos da CLI do Azure.

Pré-requisitos

  • Você pode usar o portal Cloud Shell para executar comandos de cópia de contêiner. Como alternativa, você pode executar os comandos localmente; certifique-se de ter a CLI do Azure baixada e instalada em sua máquina.
  • Atualmente, a cópia de contêiner só é suportada nessas regiões. Certifique-se de que a região de escrita da sua conta pertence a esta lista.
  • Instale a extensão de visualização do Azure Cosmos DB que contém os comandos de cópia de contêiner.
    az extension add --name cosmosdb-preview
    

Nota

O trabalho de cópia de contêiner em contas do Azure Cosmos DB está disponível apenas para a conta da API NoSQL. O trabalho de cópia de contêiner em uma conta do Azure Cosmos DB está disponível para contas de API NoSQL, MongoDB e Cassandra.

Criar um trabalho de cópia de contêiner para copiar dados em uma conta do Azure Cosmos DB

Definir variáveis de shell

Primeiro, defina todas as variáveis que cada script individual usa.

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

Criar trabalho de cópia de contêiner

API para conta NoSQL

Crie um trabalho para copiar um contêiner em uma conta do Azure Cosmos DB API for NoSQL:

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

API para conta Cassandra

Crie um trabalho para copiar um contêiner dentro de uma API do Azure Cosmos DB para conta Cassandra:

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 

API para conta MongoDB

Crie um trabalho para copiar um contêiner dentro de uma conta da API do Azure Cosmos DB para 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 

Nota

--job-name deve ser exclusivo para cada trabalho dentro de uma conta.

Criar um trabalho de cópia de contêiner para copiar dados entre contas do Azure Cosmos DB

Definir variáveis de shell

Primeiro, defina todas as variáveis que cada script individual usa.

$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 = ""

Atribuir permissão de leitura

Ao copiar dados do contêiner de uma conta para o contêiner de outra conta. É necessário conceder acesso de leitura do contêiner de origem à identidade da conta de destino para executar a operação de cópia. Siga as etapas abaixo para atribuir a permissão de leitura necessária à conta de destino.

Usando a identidade gerenciada pelo sistema

  1. Definir contexto de subscrição de destino
    az account set --subscription $destinationSubId
    
  2. Adicionar identidade do sistema na conta de destino
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG
    $principalId = ($identityOutput | ConvertFrom-Json).principalId
    
  3. Definir identidade padrão na conta de destino
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
    
  4. Definir contexto de subscrição de origem
    az account set --subscription $sourceSubId
    
  5. Adicionar atribuição de função na conta de origem
    # 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. Redefinir o contexto da assinatura de destino
    az account set --subscription $destinationSubId
    

Usando a identidade gerenciada atribuída pelo usuário

  1. Atribuir variável de identidade gerenciada atribuída pelo usuário
    $userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
    
  2. Definir contexto de subscrição de destino
    az account set --subscription $destinationSubId
    
  3. Adicionar identidade gerenciada atribuída ao usuário na conta de destino
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId
    $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
    
  4. Definir identidade padrão na conta de destino
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
    
  5. Definir contexto de subscrição de origem
    az account set --subscription $sourceSubId
    
  6. Adicionar atribuição de função na conta de origem
    $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. Redefinir o contexto da assinatura de destino
    az account set --subscription $destinationSubId
    

Criar trabalho de cópia de contêiner

API para conta NoSQL

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

Gerenciando trabalhos de cópia de contêiner

Monitorar o progresso de um trabalho de cópia de contêiner

Veja o progresso e o status de um trabalho de cópia:

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

Listar todos os trabalhos de cópia de contêiner criados em uma conta

Para listar todos os trabalhos de cópia de contêiner criados em uma conta:

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

Pausar um trabalho de cópia de contêiner

Para pausar um trabalho de cópia de contêiner em andamento, você pode usar o comando:

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

Retomar um trabalho de cópia de contêiner

Para retomar um trabalho de cópia de contêiner em andamento, você pode usar o comando:

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

Cancelar um trabalho de cópia de contêiner

Para cancelar um trabalho de cópia de contêiner em andamento, você pode usar o comando:

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

Obtenha suporte para problemas de cópia de contêiner

Para problemas relacionados à cópia do contêiner, levante uma nova solicitação de suporte do portal do Azure. Defina o Tipo de problema como 'Migração de dados' e o subtipo Problema como 'Cópia de contêiner'.

Próximos passos

  • Para obter mais informações sobre trabalhos de cópia de contêiner, consulte Trabalhos de cópia de contêiner.