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
- Definir contexto de subscrição de destino
az account set --subscription $destinationSubId
- Adicionar identidade do sistema na conta de destino
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG $principalId = ($identityOutput | ConvertFrom-Json).principalId
- Definir identidade padrão na conta de destino
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
- Definir contexto de subscrição de origem
az account set --subscription $sourceSubId
- 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
- Redefinir o contexto da assinatura de destino
az account set --subscription $destinationSubId
Usando a identidade gerenciada atribuída pelo usuário
- Atribuir variável de identidade gerenciada atribuída pelo usuário
$userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
- Definir contexto de subscrição de destino
az account set --subscription $destinationSubId
- 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
- Definir identidade padrão na conta de destino
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
- Definir contexto de subscrição de origem
az account set --subscription $sourceSubId
- 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
- 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.