Share via


Taken voor het kopiëren van containers maken en beheren in Azure Cosmos DB (preview)

VAN TOEPASSING OP: Nosql MongoDB Cassandra

Met containerkopieertaken kunt u offlinekopieën van containers maken in Azure Cosmos DB-accounts.

In dit artikel wordt beschreven hoe u kopieertaken voor containers maakt, bewaakt en beheert met behulp van Azure CLI-opdrachten.

Vereisten

  • U kunt de portal Cloud Shell gebruiken om opdrachten voor het kopiëren van containers uit te voeren. U kunt de opdrachten ook lokaal uitvoeren; Zorg ervoor dat Azure CLI is gedownload en geïnstalleerd op uw computer.
  • Momenteel wordt containerkopie alleen ondersteund in deze regio's. Zorg ervoor dat de schrijfregio van uw account deel uitmaakt van deze lijst.
  • Installeer de Preview-extensie van Azure Cosmos DB die de opdrachten voor het kopiëren van containers bevat.
    az extension add --name cosmosdb-preview
    

Notitie

De containerkopietaak in Azure Cosmos DB-accounts is alleen beschikbaar voor een NoSQL-API-account. De containerkopietaak binnen een Azure Cosmos DB-account is beschikbaar voor NoSQL-, MongoDB- en Cassandra-API-accounts.

Een containerkopietaak maken om gegevens in een Azure Cosmos DB-account te kopiëren

Shell-variabelen instellen

Stel eerst alle variabelen in die door elk afzonderlijk script worden gebruikt.

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

Een containerkopietaak maken

API voor NoSQL-account

Maak een taak om een container te kopiëren binnen een Azure Cosmos DB-API voor NoSQL-account:

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 voor Cassandra-account

Maak een taak om een container te kopiëren binnen een Azure Cosmos DB-API voor Cassandra-account:

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 voor MongoDB-account

Maak een taak om een container te kopiëren binnen een Azure Cosmos DB-API voor MongoDB-account:

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 

Notitie

--job-name moet uniek zijn voor elke taak binnen een account.

Een containerkopietaak maken om gegevens te kopiëren tussen Azure Cosmos DB-accounts

Shell-variabelen instellen

Stel eerst alle variabelen in die door elk afzonderlijk script worden gebruikt.

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

Leesmachtiging toewijzen

Tijdens het kopiëren van gegevens uit de container van het ene account naar de container van een ander account. Het is vereist om leestoegang van de broncontainer te verlenen aan de identiteit van het doelaccount om de kopieerbewerking uit te voeren. Volg de onderstaande stappen om de vereiste leesmachtiging toe te wijzen aan het doelaccount.

Door het systeem beheerde identiteit gebruiken

  1. Context van doelabonnement instellen
    az account set --subscription $destinationSubId
    
  2. Systeemidentiteit toevoegen aan doelaccount
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG
    $principalId = ($identityOutput | ConvertFrom-Json).principalId
    
  3. Standaardidentiteit instellen voor doelaccount
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
    
  4. Context van bronabonnement instellen
    az account set --subscription $sourceSubId
    
  5. Roltoewijzing toevoegen aan bronaccount
    # 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. Context van doelabonnement opnieuw instellen
    az account set --subscription $destinationSubId
    

Door de gebruiker toegewezen beheerde identiteit gebruiken

  1. Door de gebruiker toegewezen beheerde identiteitsvariabele toewijzen
    $userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
    
  2. Context van doelabonnement instellen
    az account set --subscription $destinationSubId
    
  3. Door de gebruiker toegewezen beheerde identiteit toevoegen aan het doelaccount
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId
    $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
    
  4. Standaardidentiteit instellen voor doelaccount
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
    
  5. Context van bronabonnement instellen
    az account set --subscription $sourceSubId
    
  6. Roltoewijzing toevoegen aan bronaccount
    $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. Context van doelabonnement opnieuw instellen
    az account set --subscription $destinationSubId
    

Een containerkopietaak maken

API voor NoSQL-account

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

Taken voor het kopiëren van containers beheren

De voortgang van een containerkopietaak controleren

De voortgang en status van een kopieertaak weergeven:

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

Alle taken voor het kopiëren van containers weergeven die in een account zijn gemaakt

Alle containerkopietaken weergeven die in een account zijn gemaakt:

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

Een containerkopietaak onderbreken

Als u een doorlopende containerkopietaak wilt onderbreken, kunt u de opdracht gebruiken:

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

Een containerkopietaak hervatten

Als u een doorlopende containerkopietaak wilt hervatten, kunt u de opdracht gebruiken:

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

Een containerkopietaak annuleren

Als u een doorlopende containerkopietaak wilt annuleren, kunt u de volgende opdracht gebruiken:

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

Ondersteuning krijgen voor problemen met het kopiëren van containers

Voor problemen met betrekking tot het kopiëren van containers dient u een nieuwe ondersteuningsaanvraag in vanuit Azure Portal. Stel het probleemtype in als 'Gegevensmigratie' en het subtype Probleem als 'Containerkopie'.

Volgende stappen