Compartir a través de


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

  1. Establecimiento del contexto de la suscripción de destino
    az account set --subscription $destinationSubId
    
  2. 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
    
  3. Establecimiento de la identidad predeterminada en la cuenta de destino
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
    
  4. Establecimiento del contexto de la suscripción de origen
    az account set --subscription $sourceSubId
    
  5. 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
    
  6. Restablecer el contexto de la suscripción de destino
    az account set --subscription $destinationSubId
    

Uso de una identidad administrada asignada por el usuario

  1. Asignar variable de identidad administrada asignada por el usuario
    $userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
    
  2. Establecimiento del contexto de la suscripción de destino
    az account set --subscription $destinationSubId
    
  3. 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
    
  4. Establecimiento de la identidad predeterminada en la cuenta de destino
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
    
  5. Establecimiento del contexto de la suscripción de origen
    az account set --subscription $sourceSubId
    
  6. 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
    
  7. 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
  1. Recuento total – representa el número total de cambios (documento total + cambios nuevos) en el contenedor de origen en un momento dado.
  2. 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

  1. 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.
  2. 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
  1. 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.