Creación y administración de trabajos de copia de contenedores dentro de la cuenta en Azure Cosmos DB (versión preliminar)
Copia de trabajos ayuda a crear copias de contenedores en cuentas de Azure Cosmos DB.
En este artículo se describe cómo crear, supervisar y administrar trabajos de copia mediante comandos de la CLI de Azure.
Requisitos previos
- Puede usar el portal Cloud Shell para ejecutar los comandos de copia de contenedor. Como alternativa, puede ejecutar los comandos localmente. Asegúrese de que tiene la CLI de Azure descargada e instalada en su equipo.
- Actualmente, la copia de contenedor solo se admite en estas regiones. Asegúrese de que la región de escritura de la cuenta pertenece a esta lista.
- Instale la extensión de versión preliminar de Azure Cosmos DB que contiene los comandos de copia del contenedor.
az extension add --name cosmosdb-preview
Establecimiento de las variables del shell
En primer lugar, establezca todas las variables que usa cada script individual.
$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 = ""
Asignación de permisos de lectura
Nota:
Este paso no es necesario si va a copiar datos dentro de la misma cuenta de Azure Cosmos DB.
Al copiar datos de un contenedor de una cuenta en el contenedor de otra cuenta, es necesario conceder acceso de lectura del contenedor de origen a la identidad de la cuenta de destino para realizar la operación de copia. Siga los pasos que se indican a continuación para asignar el permiso de lectura necesario a la cuenta de destino.
Identidad administrada por el sistema
- Establecimiento del contexto de la suscripción de destino
az account set --subscription $destinationSubId
- Añadir la identidad del sistema en la cuenta de destino
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG $principalId = ($identityOutput | ConvertFrom-Json).principalId
- Establecimiento de la identidad predeterminada en la cuenta de destino
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
- Establecimiento del contexto de la suscripción de origen
az account set --subscription $sourceSubId
- Agregar asignación de roles en la cuenta de origen
# 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
- Restablecer el contexto de la suscripción de destino
az account set --subscription $destinationSubId
Uso de una identidad administrada asignada por el usuario
- Asignar variable de identidad administrada asignada por el usuario
$userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
- Establecimiento del contexto de la suscripción de destino
az account set --subscription $destinationSubId
- Adición de una identidad administrada asignada por el usuario en la cuenta de destino
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
- Establecimiento de la identidad predeterminada en la cuenta de destino
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
- Establecimiento del contexto de la suscripción de origen
az account set --subscription $sourceSubId
- Agregar asignación de roles en la cuenta de origen
$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
- Restablecer el contexto de la suscripción de destino
az account set --subscription $destinationSubId
Creación de un trabajo de copia
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
Supervisión de progreso
Supervise el progreso mediante el comando siguiente.
az cosmosdb copy show `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
- Recuento total – representa el número total de cambios (documento total + cambios nuevos) en el contenedor de origen en un momento dado.
- Recuento procesado: representa el número total de eventos procedentes de la fuente de cambios del contenedor de origen que ha procesado el trabajo de copia.
Completar el trabajo de copia
- Cuando el recuento procesado sea mayor o igual que el recuento total, desactive las actualizaciones del contenedor de origen y espere 5 a 10 minutos para vaciar los cambios restantes.
- Ejecute la API de finalización para finalizar el trabajo de copia y liberar recursos de proceso, lo que también escribirá los cambios restantes (si los hay) en el contenedor de destino.
az cosmosdb copy complete `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
- Actualice las aplicaciones cliente para empezar a usar el nuevo contenedor (destino) si es necesario.
Establecimiento de las variables del shell
En primer lugar, establezca todas las variables que usa cada script individual.
$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceDatabase = ""
$sourceCollection = ""
$destinationDatabase = ""
$destinationCollection = ""
Creación de un trabajo de copia
Cree un trabajo para copiar una colección dentro de una cuenta de API de 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
debe ser único para cada trabajo dentro de una cuenta.
Establecimiento de las variables del shell
En primer lugar, establezca todas las variables que usa cada script individual.
$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceKeySpace = ""
$sourceTable = ""
$destinationKeySpace = ""
$destinationTable = ""
Creación de un trabajo de copia
Cree un trabajo para copiar una tabla dentro de una cuenta de Azure Cosmos DB for 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
debe ser único para cada trabajo dentro de una cuenta.
Administración de trabajos de copia
Supervisión del progreso de un trabajo de copia
Vea el progreso y el estado de un trabajo de copia:
az cosmosdb copy show `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Enumerar todos los trabajos de copia creados en una cuenta
Para enumerar todos los trabajos de copia creados en una cuenta:
az cosmosdb copy list `
--resource-group $destinationAccountRG `
--account-name $destinationAccount
Pausar un trabajo de copia
Para pausar un trabajo de copia en curso, puede usar el comando :
az cosmosdb copy pause `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Reanudar un trabajo de copia
Para reanudar un trabajo de copia en curso, puede usar el comando :
az cosmosdb copy resume `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Cancelar un trabajo de copia
Para cancelar un trabajo de copia en curso, puede usar el comando :
az cosmosdb copy cancel `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Obtención de soporte técnico para problemas de copia
Para problemas relacionados con un trabajo de copia, genere una Nueva solicitud de soporte técnico desde Azure Portal. Establezca el Tipo de problema como “Migración de datos” y el Subtipo de problema como “Copia del contenedor”.
Pasos siguientes
- Para obtener más información sobre los trabajos de copia de contenedor, consulte Copia de trabajos.