Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 op uw computer is geïnstalleerd.
- 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 geven voor de broncontainer naar de identiteit van het doelaccount. Volg deze 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
- Stel de standaardidentiteit in voor het 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 variabele voor beheerde identiteit 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
- Stel de standaardidentiteit in voor het 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 deze opdracht:
az cosmosdb copy show `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
- Totaalaantal vertegenwoordigt het totale aantal wijzigingen (totaal aantal wijzigingen + eventuele nieuwe wijzigingen) in de broncontainer op elk gewenst moment.
- Het verwerkte aantal vertegenwoordigt 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. Hiermee worden ook de 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 deze 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 deze 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 probleemsubtype als containerkopie.