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 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
    

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 nutné udělit přístup ke čtení zdrojového kontejneru k identitě cílového účtu, aby bylo možné provést operaci kopírování. 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í

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í následujícího příkazu.

az cosmosdb copy show `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName
  1. Celkový počet – představuje celkový počet změn (celkový dokument + jakékoli nové změny) ve zdrojovém kontejneru v libovolném okamžiku.
  2. 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čování dokončete úlohu kopírování a bezplatné výpočetní prostředky. Tím se také zapíšou zbývající změny (pokud existuje) 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 "Migrace dat" a podtyp problému jako "Kopie kontejneru".

Další kroky

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