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í dat ve službě Azure Cosmos DB můžete provádět pomocí úloh kopírování kontejneru.
Pokud chcete dosáhnout některého z těchto scénářů, budete možná muset zkopírovat data ze svého účtu služby Azure Cosmos DB:
- Kopírování všech položek z jednoho kontejneru do druhého
- Změňte členitost zřizování propustnosti z databáze na kontejner a naopak.
- Změna klíče oddílu kontejneru
- Aktualizace jedinečných klíčů pro kontejner
- Přejmenujte kontejner nebo databázi.
- Změňte režim kapacity účtu z bezserverové na zřízený nebo naopak.
- Přijměte nové funkce, které jsou podporovány pouze pro nové kontejnery, například hierarchické klíče oddílů.
Úlohy kopírování je možné vytvářet a spravovat pomocí příkazů Azure CLI.
Začínáme
Požadavky
- Povolte průběžné zálohování u zdrojového účtu služby Azure Cosmos DB.
- U zdrojového účtu povolte preview funkci všech verzí a odstranění režimu změnového kanálu.
Povolit online kopírování
Pokud chcete ve zdrojovém účtu povolit online kopírování, proveďte následující kroky pomocí Azure CLI.
# Set shell variables.
$resourceGroupName = <azure_resource_group>
$accountName = <azure_cosmos_db_account_name>
$EnableOnlineContainerCopy = "EnableOnlineContainerCopy"
# List down existing capabilities of your account.
$cosmosdb = az cosmosdb show \
--resource-group $resourceGroupName \
--name $accountName
$capabilities = (($cosmosdb | ConvertFrom-Json).capabilities)
# Append EnableOnlineContainerCopy capability in the list of capabilities.
$capabilitiesToAdd = @()
foreach ($item in $capabilities) {
$capabilitiesToAdd += $item.name
}
$capabilitiesToAdd += $EnableOnlineContainerCopy
# Update Cosmos DB account
az cosmosdb update --capabilities $capabilitiesToAdd \
-n $accountName -g $resourceGroupName
Důležité
Za všechny operace zápisu na zdrojovém účtu se účtují dvojité RU, aby se zachovaly předchozí i aktuální verze změn položek v kontejneru. Toto zvýšení poplatků za RU se může v budoucnu změnit.
Kopírování dat kontejneru
- Vytvořte cílový kontejner Azure Cosmos DB pomocí nastavení, která chcete použít (klíč oddílu, členitost propustnosti, jednotky žádostí, jedinečný klíč atd.).
- Vytvořte úlohu kopírování kontejneru.
- Monitorujte průběh úlohy kopírování.
- Po zkopírování všech dokumentů zastavte aktualizace zdrojového kontejneru a potom zavolejte rozhraní API pro dokončování, které označí úlohu jako dokončenou.
- Pokračujte v operacích tím, že aplikaci nebo klienta odpovídajícím způsobem nasměrujte na zdrojový nebo cílový kontejner.
Jak funguje kopírování kontejneru?
- Platforma přiděluje cílovému účtu služby Azure Cosmos DB výpočetní instance na straně serveru ke spuštění úloh kopírování kontejneru.
- V každém okamžiku se spustí jedna úloha ve všech instancích.
- Online úlohy kopírování využívají režim sledování změn všech verzí a odstranění ke kopírování dat a replikaci přírůstkových změn ze zdrojového kontejneru do cílového kontejneru.
- Po dokončení úlohy platforma tyto instance uvolňuje po 15 minutách nečinnosti.
Offline kopírovací úlohy kolekcí můžete provádět k účelu kopírování dat ve stejném účtu služby Azure Cosmos DB pro MongoDB.
Kopírování dat kolekce
- Vytvořte cílovou kolekci Azure Cosmos DB pomocí nastavení, která chcete použít (klíč oddílu, členitost propustnosti, jednotky žádostí, jedinečný klíč atd.).
- Zastavte operace ve zdrojové kolekci pozastavením instancí aplikace nebo všech klientů, kteří se k ní připojují.
- Vytvořte úlohu kopírování.
- Sledujte průběh úlohy kopírování a počkejte, až se dokončí.
- Pokračujte v operacích tím, že odpovídajícím způsobem nasměrujte aplikaci nebo klienta na zdroj nebo cílovou kolekci podle očekávání.
Poznámka:
Důrazně doporučujeme, abyste před zahájením offline úlohy kopírování kolekce přestali provádět všechny operace ve zdrojové kolekci. Odstranění položek a aktualizace provedené ve zdrojové kolekci po spuštění úlohy kopírování nemusí být zachyceny. Pokud v průběhu úlohy kopírování pokračujete v provádění operací se zdrojovými kolekcemi, může dojít k duplikování nebo chybějícím datům v cílové kolekci.
Jak funguje proces kopírování kolekce?
- Platforma přidělí výpočetní instance na straně serveru pro cílový účet služby Azure Cosmos DB.
- Tyto instance jsou přiděleny při vytvoření jedné nebo více úloh kopírování kolekce v rámci účtu.
- Úlohy kopírování se spouštějí v těchto instancích.
- V každém okamžiku se spustí jedna úloha ve všech instancích.
- Instance jsou sdíleny všemi úlohami kopírování spuštěnými ve stejném účtu.
- Offline kopírovací úlohy využívají streamy změn ke kopírování dat a replikaci přírůstkových změn ze zdrojové kolekce do cílové kolekce.
- Platforma může uvolnit instance, pokud jsou nečinné déle než 15 minut.
Můžete provést offline kopírování tabulky pro zkopírování dat z jedné tabulky do druhé ve stejném účtu Azure Cosmos DB for Apache Cassandra.
Kopírování dat tabulky
- Vytvořte cílovou tabulku Azure Cosmos DB pomocí nastavení, která chcete použít (klíč oddílu, členitost propustnosti, jednotky žádostí atd.).
- Zastavte operace ve zdrojové tabulce pozastavením instancí aplikace nebo všech klientů, kteří se k ní připojují.
- Vytvořte úlohu kopírování.
- Sledujte průběh úlohy kopírování a počkejte, až se dokončí.
- Pokračujte v operacích tím, že aplikaci nebo klienta odpovídajícím způsobem nasměrujte na zdroj nebo cílovou tabulku.
Poznámka:
Důrazně doporučujeme, abyste před zahájením offline úlohy kopírování tabulky přestali provádět všechny operace ve zdrojové tabulce. Odstranění položek a aktualizace provedené ve zdrojové tabulce po spuštění úlohy kopírování nemusí být zachyceny. Pokud budete pokračovat v provádění operací se zdrojovými tabulkami, zatímco probíhá úloha kopírování, můžete mít duplicitní nebo chybějící data v cílové tabulce.
Jak funguje kopírování tabulky?
- Platforma přidělí výpočetní instance na straně serveru pro cílový účet služby Azure Cosmos DB.
- Tyto instance se přidělují při vytvoření jedné nebo více úloh kopírování v rámci účtu.
- Úlohy kopírování se spouštějí v těchto instancích.
- V každém okamžiku se spustí jedna úloha ve všech instancích.
- Instance jsou sdíleny všemi úlohami kopírování spuštěnými ve stejném účtu.
- Offline úlohy kopírování využívají kanál změn ke kopírování dat a replikaci přírůstkových změn ze zdrojové tabulky do cílové tabulky.
- Platforma může uvolnit instance, pokud jsou nečinné déle než 15 minut.
Faktory, které ovlivňují rychlost úlohy kopírování
Rychlost průběhu úlohy kopírování kontejneru je určena těmito faktory:
Nastavení propustnosti zdrojového kontejneru nebo databáze
Nastavení propustnosti cílového kontejneru nebo databáze.
Návod
Nastavte propustnost cílového kontejneru na alespoň dvakrát propustnost zdrojového kontejneru.
Výpočetní instance na straně serveru, které jsou přiděleny k účtu služby Azure Cosmos DB pro provádění přenosu dat.
Důležité
Výchozí varianta SKU nabízí na každý účet dvě instance na straně serveru s 4 vCPU a 16 GB.
Omezení
Kritéria způsobilosti pro verzi Preview
Úlohy kopírování kontejnerů nefungují s účty, které mají povolené následující funkce. Před spuštěním úloh kopírování kontejneru tyto funkce zakažte:
Konfigurace účtu
Nastavení TTL (Time to Live) se v cílovém kontejneru neupravuje. V důsledku toho, pokud ve zdrojovém kontejneru nevypršela platnost dokumentu, spustí se jeho odpočítávání znovu v cílovém kontejneru.
Nejčastější dotazy
Existuje smlouva o úrovni služeb pro úlohy kopírování kontejnerů?
Úlohy kopírování kontejnerů se v současné době podporují na základě maximálního úsilí. Neposkytujeme žádné záruky smlouvy o úrovni služeb (SLA) za dobu potřebnou k dokončení úloh.
Můžu v rámci účtu vytvořit více úloh kopírování kontejneru?
Ano, v rámci stejného účtu můžete vytvořit více úloh. Úlohy běží po sobě. Můžete zobrazit seznam všech úloh vytvořených v rámci účtu a sledovat jejich průběh.
Můžu zkopírovat celou databázi v rámci účtu služby Azure Cosmos DB?
Pro každý kontejner v databázi musíte vytvořit úlohu.
Mám účet Cosmos DB s více oblastmi. Ve kterém regionu se spustí úloha kopírování kontejneru?
Úloha kopírování kontejneru se spustí v oblasti zápisu. V účtu, který je nakonfigurovaný pro zápisy do více oblastí, se úloha spustí v jedné z oblastí v seznamu oblastí zápisu.
Co se stane s úlohami kopírování kontejneru při změně oblasti zápisu účtu?
Ve vzácném scénáři výpadku oblasti nebo kvůli ručnímu převzetí služeb při selhání se může oblast zápisu účtu změnit. V tomto scénáři se nezdaří úlohy kopírování neúplných kontejnerů vytvořené v rámci účtu. Tyto neúspěšné úlohy byste museli znovu vytvořit. Znovu vytvořené úlohy se pak spustí v nové (aktuální) oblasti zápisu.
Podporované oblasti
V současné době se kopírování kontejnerů podporuje v následujících oblastech:
| Severní a Jižní Amerika | Evropa a Afrika | Asie a Tichomoří |
|---|---|---|
| Brazílie – jih | Francie – střed | Austrálie – střed |
| Kanada – střed | Francie – jih | Austrálie – střed 2 |
| Kanada – východ | Německo – sever | Austrálie – východ |
| Střed USA | Německo – středozápad | Indie – střed |
| USA – střed (EUAP) | Severní Evropa | Japonsko – východ |
| USA – východ | Norsko – východ | Korea – střed |
| USA – východ 2 | Norsko – západ | Jihovýchodní Asie |
| USA – východ 2 (EUAP) | Švýcarsko – sever | Spojené arabské emiráty – střed |
| Střed USA – sever | Švýcarsko – západ | Indie – západ |
| Střed USA – jih | Velká Británie – jih | Východní Asie |
| Středozápadní USA | Velká Británie – západ | Malajsie – jih |
| USA – západ | Západní Evropa | Japonsko – západ |
| USA – západ 2 | Izrael – střed | Austrálie – jihovýchod |
| Nepodporováno | Jižní Afrika – sever | Nepodporováno |
Známé a běžné problémy
Při použití funkce kopírování online kontejneru, pokud
idje pole změněno ve zdrojovém kontejneru, cílový kontejner ukládá dva samostatné dokumenty, z nichž každý odpovídá jedinečnýmidhodnotám.Při změně klíčů oddílů během kopírování dat do cílového kontejneru se ujistěte, že je nový klíč oddílu a
idkombinace v celém kontejneru jedinečné.Představte si například následující scénář:
Původní klíč oddílu:
/department
Zdrojové dokumenty:{ "id": "101", "employeeName": "John Doe", "department": "HR" }, { "id": "101", "employeeName": "John Doe", "department": "Finance" }Nový klíč oddílu:
/employeeName
Výsledné dokumenty v cílovém kontejneru:{ "id": "101", "employeeName": "John Doe", "department": "HR" }, { "id": "101", "employeeName": "John Doe", "department": "Finance" }V tomto případě teď oba dokumenty sdílejí stejný klíč oddílu (
/employeeName) v kombinaci sid("employeeName": "John Doe", "id": "101"), což způsobuje konflikt. Výsledkem tohoto konfliktu je chyba vložení. Abyste se těmto problémům vyhnuli, ujistěte se, že nový klíč oddílu aidkombinace jsou jedinečné ve všech dokumentech v cílovém kontejneru.Chyba – Klíč oddílu dosáhl maximální velikosti 20 GB
Při úpravě klíčů oddílů během kopírování dat do cílového kontejneru se ujistěte, že nový klíč oddílu zůstane v limitu velikosti klíče logického oddílu 20 GB. Pokud dojde k překročení tohoto limitu, úloha selže s následující chybou:
"code": "403", "message": "Response status code does not indicate success: Forbidden (403); Substatus: 1014; ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Reason: (Message: {"Errors":["Partition key reached maximum size of 20 GB. Learn more: https://aka.ms/CosmosDB/sql/errors/full-pk"]"Chyba – Prostředek vlastníka neexistuje
Pokud se vytvoření úlohy nezdaří a zobrazí se chyba "Prostředek vlastníka neexistuje" (kód chyby 404), cílový kontejner ještě nebyl vytvořen nebo název kontejneru, který se používá k vytvoření úlohy, neodpovídá skutečnému názvu kontejneru.
Před spuštěním úlohy se ujistěte, že je cílový kontejner vytvořen, a ujistěte se, že název kontejneru v úloze odpovídá skutečnému názvu kontejneru.
"code": "404", "message": "Response status code does not indicate success: NotFound (404); Substatus: 1003; ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Reason: (Message: {\"Errors\":[\"Owner resource does not exist\"]Chyba – Chyba při získávání prostředků pro úlohu
K této chybě může dojít kvůli interním problémům se serverem. Pokud chcete tento problém vyřešit, obraťte se na podpora Microsoftu otevřením nové žádosti o podporu na webu Azure Portal. V případě typu problému vyberte Migraci dat. Pro podtyp Problém vyberte kopii kontejneru v rámci účtu.
"code": "500" "message": "Error while getting resources for job, StatusCode: 500, SubStatusCode: 0, OperationId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx