Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
- Nastavení kontextu cílového předplatného:
az account set --subscription $destinationSubId - 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 - Nastavení výchozí identity v cílovém účtu:
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity" - Nastavení kontextu zdrojového předplatného:
az account set --subscription $sourceSubId - 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 - Resetování kontextu cílového předplatného:
az account set --subscription $destinationSubId
Použití spravované identity přiřazené uživatelem
- Přiřazení proměnné identity spravované uživatelem:
$userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>" - Nastavení kontextu cílového předplatného:
az account set --subscription $destinationSubId - 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 - Nastavení výchozí identity v cílovém účtu:
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId - Nastavení kontextu zdrojového předplatného:
az account set --subscription $sourceSubId - 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 - 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í
- 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.
- 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
- 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.