Delen via


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

Met kopieertaken kunt u kopieën van containers maken in Azure Cosmos DB-accounts.

In dit artikel wordt beschreven hoe u kopieertaken 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
    

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

Notitie

Deze stap is niet vereist als u gegevens kopieert binnen hetzelfde Azure Cosmos DB-account.

Tijdens het kopiëren van gegevens uit de container van het ene account naar de container van een ander account, moet u leestoegang tot de broncontainer 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
    

Kopieertaak maken

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

Voortgang bijhouden

Controleer de voortgang met behulp van de onderstaande opdracht.

az cosmosdb copy show `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName
  1. Totaalaantal: dit vertegenwoordigt het totale aantal wijzigingen (totaal aantal wijzigingen + eventuele nieuwe wijzigingen) in de broncontainer op elk gewenst moment.
  2. Verwerkt aantal: het totale aantal gebeurtenissen dat afkomstig is van de wijzigingenfeed van de broncontainer die door de kopieertaak is verwerkt.

Kopieertaak voltooien

  1. Wanneer het verwerkte aantal groter dan of gelijk is aan het totale aantal, schakelt u alle updates in de broncontainer uit en wacht u 5-10 minuten om de resterende wijzigingen leeg te maken.
  2. Voer de voltooiings-API uit om de kopieertaak en gratis rekenresources te voltooien. Hierdoor worden ook resterende wijzigingen (indien van toepassing) naar de doelcontainer geschreven.
    az cosmosdb copy complete `
        --resource-group $destinationAccountRG `
        --account-name $destinationAccount `
        --job-name $jobName
  1. Werk de clienttoepassingen zo nodig bij om de nieuwe (doel)container te gebruiken.

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 = ""
$sourceCollection = ""
$destinationDatabase = ""
$destinationCollection = ""

Kopieertaak maken

Maak een taak om een verzameling 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.

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 = ""
$sourceKeySpace = ""
$sourceTable = ""
$destinationKeySpace = ""
$destinationTable = ""

Kopieertaak maken

Maak een taak om een tabel te kopiëren binnen een Azure Cosmos DB voor Apache 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 

Notitie

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

Kopieertaken beheren

De voortgang van een kopieertaak controleren

De voortgang en status van een kopieertaak weergeven:

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

Alle kopieertaken weergeven die in een account zijn gemaakt

Ga als volgende te werk om alle kopieertaken weer te geven die in een account zijn gemaakt:

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

Een kopieertaak onderbreken

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

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

Een kopieertaak hervatten

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

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

Een kopieertaak annuleren

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

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

Ondersteuning krijgen voor kopieerproblemen

Voor problemen met betrekking tot een kopieertaak dient u een nieuwe ondersteuningsaanvraag in vanuit de Azure-portal. Stel het probleemtype in als 'Gegevensmigratie' en het subtype Probleem als 'Containerkopie'.

Volgende stappen