Vytváření a správa úloh kopírování kontejnerů ve službě Azure Cosmos DB (Preview)

PLATÍ PRO: NoSQL MongoDB Cassandra

Úlohy kopírování kontejnerů pomáhají vytvářet offline kopie kontejnerů v účtech Azure Cosmos DB.

Tento článek popisuje, jak vytvářet, monitorovat a spravovat úlohy kopírování kontejnerů pomocí příkazů Azure CLI.

Předpoklady

  • Ke spuštění příkazů pro kopírování kontejnerů můžete použít portál Cloud Shell . Případně můžete příkazy spouštět místně; ujistěte se, že jste na počítači stáhli a nainstalovali Azure CLI .
  • V současné době se kopírování kontejnerů podporuje jenom v těchto oblastech. Ujistěte se, že oblast zápisu vašeho účtu patří do tohoto seznamu.
  • Nainstalujte rozšíření Azure Cosmos DB ve verzi Preview, které obsahuje příkazy pro kopírování kontejneru.
    az extension add --name cosmosdb-preview
    

Poznámka:

Úloha kopírování kontejnerů napříč účty Služby Azure Cosmos DB je k dispozici pouze pro účet rozhraní API NoSQL. Úloha kopírování kontejnerů v rámci účtu služby Azure Cosmos DB je k dispozici pro účty noSQL, MongoDB a Cassandra API.

Vytvoření úlohy kopírování kontejneru pro kopírování dat v rámci účtu služby Azure Cosmos DB

Nastavení proměnných prostředí

Nejprve nastavte všechny proměnné, které jednotlivé skripty používají.

$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceDatabase = ""
$sourceContainer = ""
$destinationDatabase = ""
$destinationContainer = ""

Vytvoření úlohy kopírování kontejneru

Účet rozhraní API pro NoSQL

Vytvořte úlohu pro kopírování kontejneru v rámci účtu rozhraní API služby Azure Cosmos DB pro NoSQL:

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

Rozhraní API pro účet Cassandra

Vytvořte úlohu pro kopírování kontejneru v rámci účtu rozhraní API služby Azure Cosmos DB pro Cassandra:

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 

Účet ROZHRANÍ API pro MongoDB

Vytvořte úlohu pro kopírování kontejneru v rámci účtu rozhraní API služby Azure Cosmos DB pro MongoDB:

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 

Poznámka:

--job-name pro každou úlohu v rámci účtu by měla být jedinečná.

Vytvoření úlohy kopírování kontejneru pro kopírování dat napříč účty Azure Cosmos DB

Nastavení proměnných prostředí

Nejprve nastavte všechny proměnné, které jednotlivé skripty používají.

$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 = ""

Přiřazení oprávnění ke čtení

Při kopírování dat z kontejneru jednoho účtu do kontejneru jiného účtu. Aby bylo možné provést operaci kopírování, je nutné udělit přístup ke čtení zdrojového kontejneru identitě cílového účtu. Podle následujících kroků přiřaďte požadované oprávnění ke čtení cílovému účtu.

Použití spravované identity systému

  1. Nastavení kontextu cílového předplatného
    az account set --subscription $destinationSubId
    
  2. Přidání systémové identity v cílovém účtu
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG
    $principalId = ($identityOutput | ConvertFrom-Json).principalId
    
  3. Nastavení výchozí identity v cílovém účtu
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
    
  4. Nastavení kontextu zdrojového předplatného
    az account set --subscription $sourceSubId
    
  5. Přidání přiřazení role ke zdrojovému účtu
    # 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. Resetování kontextu cílového předplatného
    az account set --subscription $destinationSubId
    

Použití spravované identity přiřazené uživatelem

  1. Přiřazení proměnné spravované identity přiřazené uživatelem
    $userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
    
  2. Nastavení kontextu cílového předplatného
    az account set --subscription $destinationSubId
    
  3. Přidání spravované identity přiřazené uživatelem v cílovém účtu
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId
    $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
    
  4. Nastavení výchozí identity v cílovém účtu
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
    
  5. Nastavení kontextu zdrojového předplatného
    az account set --subscription $sourceSubId
    
  6. Přidání přiřazení role ke zdrojovému účtu
    $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. Resetování kontextu cílového předplatného
    az account set --subscription $destinationSubId
    

Vytvoření úlohy kopírování kontejneru

Účet rozhraní API pro NoSQL

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

Správa úloh kopírování kontejneru

Monitorování průběhu úlohy kopírování kontejneru

Zobrazení průběhu a stavu úlohy kopírování:

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

Výpis všech úloh kopírování kontejneru vytvořených v účtu

Zobrazení seznamu všech úloh kopírování kontejneru vytvořených v účtu:

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

Pozastavení úlohy kopírování kontejneru

Pokud chcete pozastavit probíhající úlohu kopírování kontejneru, můžete použít tento příkaz:

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

Obnovení úlohy kopírování kontejneru

Pokud chcete obnovit probíhající úlohu kopírování kontejneru, můžete použít tento příkaz:

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

Zrušení úlohy kopírování kontejneru

Pokud chcete zrušit probíhající úlohu kopírování kontejneru, můžete použít tento příkaz:

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

Získání podpory problémů s kopírováním kontejnerů

V případě problémů souvisejících s kopírováním kontejneru vytvořte novou žádost o podporu na webu Azure Portal. Nastavte typ problému jako "Migrace dat" a podtyp problému jako "Kopie kontejneru".

Další kroky

  • Další informace o úlohách kopírování kontejneru najdete v tématu Úlohy kopírování kontejneru.