Criar e gerenciar trabalhos de cópia de contêiner no Azure Cosmos DB (Visualização)
Os trabalhos de cópia ajudam a criar cópias de contêineres em contas do Azure Cosmos DB.
Este artigo descreve como criar, monitorar e gerenciar trabalhos de cópia 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
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
Nota
Esta etapa não é necessária se você estiver copiando dados na mesma conta do Azure Cosmos DB.
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
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
Monitorizar progresso
Monitore o progresso usando o comando abaixo.
az cosmosdb copy show `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
- Contagem total – Representa o número total de alterações (total do documento + quaisquer novas alterações) no contêiner de origem em um determinado momento.
- Contagem processada – Representa o número total de eventos provenientes do feed de alterações do contêiner de origem que foram processados pelo trabalho de cópia.
Trabalho de cópia completo
- Quando a contagem processada se tornar maior ou igual à contagem total, desative todas as atualizações no contêiner de origem e aguarde de 5 a 10 minutos para liberar as alterações restantes.
- Execute a API de conclusão para concluir o trabalho de cópia e liberar recursos de computação, isso também gravará as alterações restantes (se houver) no contêiner de destino.
az cosmosdb copy complete `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
- Atualize os aplicativos cliente para começar a usar o novo contêiner (destino), se necessário.
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 = ""
$sourceCollection = ""
$destinationDatabase = ""
$destinationCollection = ""
Criar trabalho de cópia
Crie um trabalho para copiar uma coleção 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.
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 = ""
$sourceKeySpace = ""
$sourceTable = ""
$destinationKeySpace = ""
$destinationTable = ""
Criar trabalho de cópia
Crie um trabalho para copiar uma tabela dentro de uma conta do Azure Cosmos DB para Apache 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
Nota
--job-name
deve ser exclusivo para cada trabalho dentro de uma conta.
Gerenciando trabalhos de cópia
Monitorar o progresso de um trabalho de cópia
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 criados em uma conta
Para listar todos os trabalhos de cópia criados em uma conta:
az cosmosdb copy list `
--resource-group $destinationAccountRG `
--account-name $destinationAccount
Pausar um trabalho de cópia
Para pausar um trabalho de cópia 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
Para retomar um trabalho de cópia 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
Para cancelar um trabalho de cópia 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
Para problemas relacionados a um trabalho de cópia, 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 Copiar trabalhos.