Dela via


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

  1. Ange målprenumerationskontext
    az account set --subscription $destinationSubId
    
  2. Lägga till systemidentitet på målkontot
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG
    $principalId = ($identityOutput | ConvertFrom-Json).principalId
    
  3. Ange standardidentitet för målkontot
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
    
  4. Ange källprenumerationskontext
    az account set --subscription $sourceSubId
    
  5. 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
    
  6. Återställa målprenumerationskontext
    az account set --subscription $destinationSubId
    

Använda användartilldelad hanterad identitet

  1. Tilldela användartilldelad hanterad identitetsvariabel
    $userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
    
  2. Ange målprenumerationskontext
    az account set --subscription $destinationSubId
    
  3. 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
    
  4. Ange standardidentitet för målkontot
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
    
  5. Ange källprenumerationskontext
    az account set --subscription $sourceSubId
    
  6. 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
    
  7. Å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
  1. Totalt antal – Det representerar det totala antalet ändringar (totalt dokument + eventuella nya ändringar) i källcontainern vid en viss tidpunkt.
  2. 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

  1. 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.
  2. 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
  1. 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.