Skapa och hantera containerkopieringsjobb i Azure Cosmos DB (förhandsversion)
Kopieringsjobb hjälper dig att skapa kopior av containrar i Azure Cosmos DB-konton.
Den här artikeln beskriver hur du skapar, övervakar och hanterar kopieringsjobb med hjälp av Azure CLI-kommandon.
Förutsättningar
- Du kan använda Cloud Shell-portalen för att köra containerkopieringskommandon. Alternativt kan du köra kommandona lokalt. kontrollera att Azure CLI har laddats ned och installerats på datorn.
- För närvarande stöds containerkopiering endast i dessa regioner. Kontrollera att ditt kontos skrivregion tillhör den här listan.
- Installera azure Cosmos DB-förhandsgranskningstillägget som innehåller containerkopieringskommandona.
az extension add --name cosmosdb-preview
Ange gränssnittsvariabler
Ange först alla variabler som varje enskilt skript använder.
$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 = ""
Tilldela läsbehörighet
Kommentar
Det här steget krävs inte om du kopierar data i samma Azure Cosmos DB-konto.
När du kopierar data från ett kontos container till ett annat kontos container måste du ge läsbehörighet för källcontainern till målkontots identitet för att utföra kopieringsåtgärden. Följ stegen nedan för att tilldela nödvändiga läsbehörigheter till målkontot.
Använda systemhanterad identitet
- Ange målprenumerationskontext
az account set --subscription $destinationSubId
- Lägga till systemidentitet på målkontot
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG $principalId = ($identityOutput | ConvertFrom-Json).principalId
- Ange standardidentitet för målkontot
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
- Ange källprenumerationskontext
az account set --subscription $sourceSubId
- Lägga till rolltilldelning för källkontot
# 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
- Återställa målprenumerationskontext
az account set --subscription $destinationSubId
Använda användartilldelad hanterad identitet
- Tilldela användartilldelad hanterad identitetsvariabel
$userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
- Ange målprenumerationskontext
az account set --subscription $destinationSubId
- Lägga till användartilldelad hanterad identitet på målkontot
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
- Ange standardidentitet för målkontot
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
- Ange källprenumerationskontext
az account set --subscription $sourceSubId
- Lägga till rolltilldelning för källkontot
$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
- Återställa målprenumerationskontext
az account set --subscription $destinationSubId
Skapa kopieringsjobb
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
Övervaka förloppet
Övervaka förloppet med hjälp av kommandot nedan.
az cosmosdb copy show `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
- Totalt antal – Det representerar det totala antalet ändringar (totalt dokument + eventuella nya ändringar) i källcontainern vid en viss tidpunkt.
- Bearbetat antal – Det representerar det totala antalet händelser som kommer från källcontainerns ändringsflöde som har bearbetats av kopieringsjobbet.
Slutför kopieringsjobbet
- När det bearbetade antalet blir större än eller lika med det totala antalet inaktiverar du alla uppdateringar i källcontainern och väntar i 5–10 minuter för att rensa eventuella återstående ändringar.
- Kör slutförande-API:et för att slutföra kopieringsjobbet och kostnadsfria beräkningsresurser. Detta skriver även återstående ändringar (om några) till målcontainern.
az cosmosdb copy complete `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
- Uppdatera klientprogrammen så att de börjar använda den nya containern (mål) om det behövs.
Ange gränssnittsvariabler
Ange först alla variabler som varje enskilt skript använder.
$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceDatabase = ""
$sourceCollection = ""
$destinationDatabase = ""
$destinationCollection = ""
Skapa kopieringsjobb
Skapa ett jobb för att kopiera en samling i ett Azure Cosmos DB API för MongoDB-konto:
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
Kommentar
--job-name
ska vara unikt för varje jobb i ett konto.
Ange gränssnittsvariabler
Ange först alla variabler som varje enskilt skript använder.
$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceKeySpace = ""
$sourceTable = ""
$destinationKeySpace = ""
$destinationTable = ""
Skapa kopieringsjobb
Skapa jobb för att kopiera en tabell i en Azure Cosmos DB för Apache Cassandra-konto:
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
Kommentar
--job-name
ska vara unikt för varje jobb i ett konto.
Hantera kopieringsjobb
Övervaka förloppet för ett kopieringsjobb
Visa förloppet och statusen för ett kopieringsjobb:
az cosmosdb copy show `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Visa en lista över alla kopieringsjobb som skapats i ett konto
Så här visar du en lista över alla kopieringsjobb som skapats i ett konto:
az cosmosdb copy list `
--resource-group $destinationAccountRG `
--account-name $destinationAccount
Pausa ett kopieringsjobb
Du kan använda kommandot för att pausa ett pågående kopieringsjobb:
az cosmosdb copy pause `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Återuppta ett kopieringsjobb
För att återuppta ett pågående kopieringsjobb kan du använda kommandot:
az cosmosdb copy resume `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Avbryta ett kopieringsjobb
Om du vill avbryta ett pågående kopieringsjobb kan du använda kommandot:
az cosmosdb copy cancel `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Få stöd för kopieringsproblem
För problem som rör ett kopieringsjobb skapar du en ny supportbegäran från Azure Portal. Ange problemtypen som "Datamigrering" och Undertypen Problem som "Containerkopia".
Nästa steg
- Mer information om containerkopieringsjobb finns i Kopiera jobb.