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
- Context van doelabonnement instellen
az account set --subscription $destinationSubId
- Systeemidentiteit toevoegen aan doelaccount
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG $principalId = ($identityOutput | ConvertFrom-Json).principalId
- Standaardidentiteit instellen voor doelaccount
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
- Context van bronabonnement instellen
az account set --subscription $sourceSubId
- 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
- Context van doelabonnement opnieuw instellen
az account set --subscription $destinationSubId
Door de gebruiker toegewezen beheerde identiteit gebruiken
- Door de gebruiker toegewezen beheerde identiteitsvariabele toewijzen
$userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
- Context van doelabonnement instellen
az account set --subscription $destinationSubId
- 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
- Standaardidentiteit instellen voor doelaccount
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
- Context van bronabonnement instellen
az account set --subscription $sourceSubId
- 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
- 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
- Totaalaantal: dit vertegenwoordigt het totale aantal wijzigingen (totaal aantal wijzigingen + eventuele nieuwe wijzigingen) in de broncontainer op elk gewenst moment.
- Verwerkt aantal: het totale aantal gebeurtenissen dat afkomstig is van de wijzigingenfeed van de broncontainer die door de kopieertaak is verwerkt.
Kopieertaak voltooien
- 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.
- 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
- 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'.