Dela via


Skapa och hantera containerkopieringsjobb i Azure Cosmos DB (förhandsversion)

GÄLLER FÖR: NoSQL MongoDB Kassandra

Containerkopieringsjobb hjälper dig att skapa offlinekopior av containrar i Azure Cosmos DB-konton.

Den här artikeln beskriver hur du skapar, övervakar och hanterar containerkopieringsjobb 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
    

Kommentar

Containerkopieringsjobb för Azure Cosmos DB-konton är endast tillgängligt för NoSQL API-konto. Containerkopieringsjobb i ett Azure Cosmos DB-konto är tillgängligt för NoSQL-, MongoDB- och Cassandra API-konton.

Skapa ett containerkopieringsjobb för att kopiera data i ett Azure Cosmos DB-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 = ""
$sourceDatabase = ""
$sourceContainer = ""
$destinationDatabase = ""
$destinationContainer = ""

Skapa containerkopieringsjobb

API för NoSQL-konto

Skapa ett jobb för att kopiera en container i ett Azure Cosmos DB API för NoSQL-konto:

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 för Cassandra-konto

Skapa ett jobb för att kopiera en container i ett Azure Cosmos DB-API för 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 

API för MongoDB-konto

Skapa ett jobb för att kopiera en container 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.

Skapa ett containerkopieringsjobb för att kopiera data mellan Azure Cosmos DB-konton

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

När du kopierar data från ett kontos container till ett annat kontos container. Det är nödvändigt att 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 containerkopieringsjobb

API för NoSQL-konto

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

Hantera containerkopieringsjobb

Övervaka förloppet för ett containerkopieringsjobb

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 containerkopieringsjobb som skapats i ett konto

Så här listar du alla containerkopieringsjobb som skapats i ett konto:

az cosmosdb copy list `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount

Pausa ett containerkopieringsjobb

För att pausa ett pågående containerkopieringsjobb kan du använda kommandot:

az cosmosdb copy pause `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

Återuppta ett containerkopieringsjobb

För att återuppta ett pågående containerkopieringsjobb kan du använda kommandot:

az cosmosdb copy resume `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

Avbryta ett containerkopieringsjobb

Om du vill avbryta ett pågående containerkopieringsjobb kan du använda kommandot:

az cosmosdb copy cancel `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

Få stöd för problem med containerkopiering

För problem som rör containerkopiering skapar du en ny supportbegäran från Azure-portalen. Ange problemtypen som "Datamigrering" och Undertypen Problem som "Containerkopia".

Nästa steg