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
- 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ř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
- 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é spravované identity přiřazené uživatelem
$userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
- Nastavení kontextu cílového předplatného
az account set --subscription $destinationSubId
- 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
- 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ř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
- 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
- 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.
- 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č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
- 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.