Sdílet prostřednictvím


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

Kopírování úloh pomáhá vytvářet kopie kontejnerů v účtech Azure Cosmos DB.

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

Požadavky

  • 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 spustit místně. Ujistěte se, že máte na počítači nainstalované Rozhraní příkazového řádku Azure.
  • 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
    

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í

Poznámka:

Tento krok se nevyžaduje, pokud kopírujete data ve stejném účtu služby Azure Cosmos DB.

Při kopírování dat z kontejneru jednoho účtu do kontejneru jiného účtu je potřeba udělit oprávnění ke čtení zdrojového kontejneru identitě cílového účtu. Podle těchto kroků přiřaďte cílovému účtu požadovaná oprávnění ke čtení.

Použití identity spravované systémem

  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řidejte přiřazení role k 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é identity spravované uživatelem:
    $userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
    
  2. Nastavení kontextu cílového předplatného:
    az account set --subscription $destinationSubId
    
  3. Přidejte uživatelsky přiřazenou spravovanou identitu do cílového úč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řidejte přiřazení role na zdrojový účet
    $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í

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

Monitorování postupu

Sledujte průběh pomocí tohoto příkazu:

az cosmosdb copy show `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName
  • Celkový počet představuje celkový počet změn (celkový dokument + jakékoli nové změny) ve zdrojovém kontejneru v daném okamžiku.
  • Zpracovaný počet představuje celkový počet událostí pocházejících z kanálu změn zdrojového kontejneru, které byly zpracovány úlohou kopírování.

Dokončení úlohy kopírování

  1. Když se počet zpracovaných dat změní na celkový počet, vypněte všechny aktualizace ve zdrojovém kontejneru a počkejte 5 až 10 minut, aby se vyprázdnily všechny zbývající změny.
  2. Spuštěním rozhraní API pro dokončení úlohy kopírování a uvolnění výpočetních prostředků. Tím se také zapíší zbývající změny (pokud existují) do cílového kontejneru.
    az cosmosdb copy complete `
        --resource-group $destinationAccountRG `
        --account-name $destinationAccount `
        --job-name $jobName
  1. V případě potřeby aktualizujte klientské aplikace, aby začaly používat nový (cílový) kontejner.

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 = ""
$sourceCollection = ""
$destinationDatabase = ""
$destinationCollection = ""

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

Vytvořte úlohu pro kopírování kolekce 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á.

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 = ""
$sourceKeySpace = ""
$sourceTable = ""
$destinationKeySpace = ""
$destinationTable = ""

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

Vytvořte úlohu pro kopírování tabulky v rámci účtu Azure Cosmos DB for Apache 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 

Poznámka:

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

Správa úloh kopírování

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

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í vytvořených v účtu

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

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

Pozastavení úlohy kopírování

Pokud chcete pozastavit probíhající úlohu kopírování, 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í

Pokud chcete pokračovat v probíhající úloze kopírování, 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í

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

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

Získání podpory pro problémy s kopírováním

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

Další krok

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