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
- 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
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'.