Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Kopiowanie danych w usłudze Azure Cosmos DB można wykonać przy użyciu zadań kopiowania kontenerów.
Jeśli chcesz osiągnąć dowolny z następujących scenariuszy, może być konieczne skopiowanie danych z konta usługi Azure Cosmos DB:
- Skopiuj wszystkie elementy z jednego kontenera do drugiego.
- Zmień poziom szczegółowości przydzielania przepustowości, z bazy danych na kontener i odwrotnie.
- Zmień klucz partycji kontenera.
- Zaktualizuj unikatowe klucze kontenera.
- Zmień nazwę kontenera lub bazy danych.
- Zmień tryb pojemności konta z bezserwerowego na aprowizowany lub odwrotnie.
- Wdrażanie nowych funkcji, które są obsługiwane tylko dla nowych kontenerów, na przykład hierarchicznych kluczy partycji.
Zadania kopiowania można tworzyć i zarządzać przy użyciu poleceń interfejsu wiersza polecenia platformy Azure.
Wprowadzenie
Wymagania wstępne
- Włącz ciągłą kopię zapasową na źródłowym koncie usługi Azure Cosmos DB.
- Włącz opcję Wszystkie wersje i usuń funkcję trybu zestawienia zmian (wersja zapoznawcza) na koncie źródłowym.
Włączanie kopiowania w trybie online
Aby włączyć kopię online na koncie źródłowym, wykonaj następujące kroki przy użyciu interfejsu wiersza polecenia platformy Azure.
# 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
Ważne
Wszystkie operacje zapisu na koncie źródłowym są naliczane dwukrotnie, aby zachować zarówno poprzednie, jak i bieżące wersje zmian elementów w kontenerze. Ten wzrost opłaty RU może ulec zmianie w przyszłości.
Kopiowanie danych kontenera
- Utwórz docelowy kontener usługi Azure Cosmos DB przy użyciu ustawień, których chcesz użyć (klucz partycji, stopień szczegółowości przepływności, jednostki żądania, unikatowy klucz itd.).
- Utwórz zadanie kopiowania kontenera.
- Monitoruj postęp zadania kopiowania.
- Po skopiowaniu wszystkich dokumentów zatrzymaj aktualizacje w kontenerze źródłowym, a następnie wywołaj interfejs API uzupełniania, aby oznaczyć zadanie jako ukończone.
- Wznów operacje, odpowiednio wskazując aplikację lub klienta na źródłowy lub docelowy kontener zgodnie z oczekiwaniami.
Jak działa kopiowanie kontenerów?
- Platforma przydziela instancje obliczeniowe po stronie serwera na potrzeby uruchamiania zadań kopiowania kontenera dla docelowego konta Azure Cosmos DB.
- Pojedyncze zadanie jest wykonywane we wszystkich wystąpieniach w dowolnym momencie.
- Zadania kopiowania online korzystają z trybu strumienia zmian dla wszystkich wersji i usunięć, aby skopiować dane i replikować zmiany inkrementalne z kontenera źródłowego do kontenera docelowego.
- Po zakończeniu zadania platforma cofa przydział tych wystąpień po upływie 15 minut braku aktywności.
Możesz wykonać zadania kopiowania kolekcji w trybie offline, aby skopiować dane w ramach tego samego konta usługi Azure Cosmos DB dla bazy danych Mongo DB.
Kopiowanie danych kolekcji
- Utwórz docelową kolekcję usługi Azure Cosmos DB przy użyciu ustawień, których chcesz użyć (klucz partycji, stopień szczegółowości przepływności, jednostki żądania, unikatowy klucz itd.).
- Zatrzymaj operacje w kolekcji źródłowej, wstrzymując wystąpienia aplikacji lub dowolnych klientów łączących się z nią.
- Utwórz zadanie kopiowania.
- Monitoruj postęp zadania kopiowania i poczekaj na jego zakończenie.
- Wznów operacje, kierując aplikację czy klienta do źródłowej lub docelowej kolekcji zgodnie z oczekiwaniami.
Uwaga
Zdecydowanie zalecamy zaprzestanie wykonywania jakichkolwiek operacji w kolekcji źródłowej przed rozpoczęciem zadania kopiowania kolekcji w trybie offline. Usunięcie elementów i aktualizacje wykonywane w kolekcji źródłowej po uruchomieniu zadania kopiowania mogą nie zostać przechwycone. Jeśli nadal wykonujesz operacje na kolekcji źródłowej, gdy zadanie kopiowania jest w toku, być może brakuje zduplikowanych lub brakujących danych w kolekcji docelowej.
Jak działa kopiowanie kolekcji?
- Platforma przydziela zasoby obliczeniowe po stronie serwera dla docelowego konta usługi Azure Cosmos DB.
- Są one przydzielane po utworzeniu co najmniej jednego zadania kopiowania kolekcji na koncie.
- Zadania kopiowania działają na tych instancjach.
- Pojedyncze zadanie jest wykonywane we wszystkich wystąpieniach w dowolnym momencie.
- Instancje są współdzielone przez wszystkie zadania kopiowania, które są uruchomione w ramach tego samego konta.
- Zadania kopiowania w trybie offline używają strumieni zmian, aby skopiować dane i replikować zmiany przyrostowe z kolekcji źródłowej do kolekcji docelowej.
- Platforma może cofnąć przydział wystąpień, jeśli są bezczynne przez dłużej niż 15 minut.
Możesz wykonać kopiowanie tabeli w trybie offline, aby skopiować dane jednej tabeli do innej tabeli w ramach tego samego konta usługi Azure Cosmos DB dla bazy danych Apache Cassandra.
Kopiowanie danych tabeli
- Utwórz docelową tabelę usługi Azure Cosmos DB przy użyciu ustawień, których chcesz użyć (klucz partycji, stopień szczegółowości przepływności, jednostki żądań itd.).
- Zatrzymaj operacje w tabeli źródłowej, wstrzymując wystąpienia aplikacji lub wszystkich klientów łączących się z nią.
- Utwórz zadanie kopiowania.
- Monitoruj postęp zadania kopiowania i poczekaj na jego zakończenie.
- Wznów operacje, kierując aplikację lub klienta odpowiednio na tabelę źródłową lub docelową.
Uwaga
Zdecydowanie zalecamy zaprzestanie wykonywania jakichkolwiek operacji w tabeli źródłowej przed rozpoczęciem zadania kopiowania tabeli w trybie offline. Usunięcie elementów i aktualizacje wykonywane w tabeli źródłowej po uruchomieniu zadania kopiowania mogą nie zostać przechwycone. Jeśli nadal wykonujesz operacje w tabeli źródłowej, gdy zadanie kopiowania jest w toku, możesz mieć zduplikowane lub brakujące dane w tabeli docelowej.
Jak działa kopiowanie tabeli?
- Platforma przydziela zasoby obliczeniowe po stronie serwera dla docelowego konta usługi Azure Cosmos DB.
- Te wystąpienia są przydzielane, gdy jedno lub więcej zadań kopiowania jest tworzone na koncie.
- Zadania kopiowania działają na tych instancjach.
- Pojedyncze zadanie jest wykonywane we wszystkich wystąpieniach w dowolnym momencie.
- Instancje są współdzielone przez wszystkie zadania kopiowania, które są uruchomione w ramach tego samego konta.
- Zadania kopiowania w trybie offline wykorzystują Change feed do kopiowania danych i replikacji zmian przyrostowych z tabeli źródłowej do tabeli docelowej.
- Platforma może cofnąć przydział wystąpień, jeśli są bezczynne przez dłużej niż 15 minut.
Czynniki wpływające na szybkość zadania kopiowania
Szybkość postępu zadania kopiowania kontenera jest określana przez następujące czynniki:
Ustawienie przepływności źródłowego kontenera lub bazy danych.
Ustawienie przepływności kontenera docelowego lub bazy danych.
Napiwek
Ustaw przepływność kontenera docelowego na co najmniej dwa razy przepływność kontenera źródłowego.
Wystąpienia obliczeniowe po stronie serwera przydzielone do konta usługi Azure Cosmos DB na potrzeby przeprowadzania transferu danych.
Ważne
Domyślny SKU oferuje na konto dwa wystąpienia po stronie serwera, każde z 4 vCPU i 16 GB.
Ograniczenia
Kryteria uprawnień do zapoznania się
Zadania kopiowania kontenerów nie działają z kontami, które mają włączone następujące funkcje. Wyłącz te funkcje przed uruchomieniem zadań kopiowania kontenerów:
Konfiguracje kont
Ustawienie Czas życia (TTL) nie jest modyfikowane w kontenerze docelowym. W związku z tym, jeśli dokument nie wygasł w kontenerze źródłowym, rozpoczyna odliczanie na nowo w kontenerze docelowym.
Najczęściej zadawane pytania
Czy istnieje umowa dotycząca poziomu usług dla zadań kopiowania kontenerów?
Zadania kopiowania kontenerów są obecnie obsługiwane w sposób optymalny. Nie zapewniamy żadnych gwarancji dotyczących poziomu usług (SLA, Service Level Agreement) na czas potrzebny na zakończenie zadań.
Czy mogę utworzyć wiele zadań kopiowania kontenerów na koncie?
Tak, można utworzyć wiele zadań na tym samym koncie. Zadania są uruchamiane kolejno. Możesz wyświetlić listę wszystkich zadań utworzonych na koncie i monitorować ich postęp.
Czy mogę skopiować całą bazę danych na koncie usługi Azure Cosmos DB?
Musisz utworzyć zadanie dla każdego kontenera w bazie danych.
Mam konto usługi Cosmos DB z wieloma regionami. W którym regionie zostanie uruchomione zadanie kopiowania kontenera?
Operacja kopiowania kontenera jest uruchamiana w regionie zapisu. Na koncie skonfigurowanym z zapisami w wielu regionach zadanie jest uruchamiane w jednym z regionów na liście regionów zapisu.
Co się stanie z zadaniami kopiowania kontenera, gdy zmieni się region zapisu konta?
Region zapisu konta może ulec zmianie w rzadkim scenariuszu awarii regionu lub z powodu ręcznego przejścia w tryb failover. W tym scenariuszu niekompletne zadania kopiowania kontenera utworzone w ramach konta kończą się niepowodzeniem. Należy ponownie utworzyć te zadania, które zakończyły się niepowodzeniem. Ponownie utworzone zadania zostaną uruchomione w nowym (bieżącym) regionie zapisu.
Obsługiwane regiony
Obecnie kopiowanie kontenera jest obsługiwane w następujących regionach:
| Ameryka | Europa i Afryka | Azja i Pacyfik |
|---|---|---|
| Brazylia Południowa | Francja Środkowa | Australia Środkowa |
| Kanada Środkowa | Francja Południowa | Australia Środkowa 2 |
| Kanada Wschodnia | Niemcy Północne | Australia Wschodnia |
| Środkowe stany USA | Niemcy Środkowo-Zachodnie | Indie Środkowe |
| Środkowe stany USA — EUAP | Europa Północna | Japonia Wschodnia |
| Wschodnie stany USA | Norwegia Wschodnia | Korea Środkowa |
| Wschodnie stany USA 2 | Norwegia Zachodnia | Azja Południowo-Wschodnia |
| Wschodnie stany USA 2 — EUAP | Szwajcaria Północna | Środkowe Zjednoczone Emiraty Arabskie |
| Północno-środkowe stany USA | Szwajcaria Zachodnia | Indie Zachodnie |
| Południowo-środkowe stany USA | Południowe Zjednoczone Królestwo | Azja Wschodnia |
| Zachodnio-środkowe stany USA | Zachodnie Zjednoczone Królestwo | Malezja Południowa |
| Zachodnie stany USA | Europa Zachodnia | Japonia Zachodnia |
| Zachodnie stany USA 2 | Izrael Środkowy | Australia Południowo-Wschodnia |
| Nie jest obsługiwane | Północna Republika Południowej Afryki | Nie jest obsługiwane |
Znane i typowe problemy
Podczas korzystania z funkcji kopiowania kontenera online, jeśli
idpole jest modyfikowane w kontenerze źródłowym, kontener docelowy przechowuje dwa oddzielne dokumenty, z których każdy odpowiada odrębnymidwartościom.Podczas zmieniania kluczy partycji podczas kopiowania danych do kontenera docelowego upewnij się, że nowy klucz partycji i
idkombinacje są unikatowe w kontenerze.Rozważmy na przykład następujący scenariusz:
Oryginalny klucz partycji:
/department
Dokumenty źródłowe:{ "id": "101", "employeeName": "John Doe", "department": "HR" }, { "id": "101", "employeeName": "John Doe", "department": "Finance" }Nowy klucz partycji:
/employeeName
Wynikowe dokumenty w kontenerze docelowym:{ "id": "101", "employeeName": "John Doe", "department": "HR" }, { "id": "101", "employeeName": "John Doe", "department": "Finance" }W tym przypadku oba dokumenty współdzielą teraz ten sam klucz partycji (
/employeeName) i kombinacjęid("employeeName": "John Doe", "id": "101"), co powoduje konflikt. Ten konflikt powoduje błąd wstawiania. Aby uniknąć takich problemów, upewnij się, że kombinacje nowego klucza partycji iidsą unikalne we wszystkich dokumentach w kontenerze docelowym.Błąd — klucz partycji osiągnął maksymalny rozmiar 20 GB
Podczas modyfikowania kluczy partycji podczas kopiowania danych do kontenera docelowego upewnij się, że nowy klucz partycji pozostaje w limicie rozmiaru klucza partycji logicznej 20 GB. Jeśli ten limit zostanie przekroczony, zadanie zakończy się niepowodzeniem z powodu następującego błędu:
"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"]"Błąd — zasób właściciela nie istnieje
Jeśli tworzenie zadania zakończy się niepowodzeniem i zostanie wyświetlony błąd "Zasób właściciela nie istnieje" (kod błędu 404), kontener docelowy nie został jeszcze utworzony lub nazwa kontenera używana do utworzenia zadania nie jest zgodna z rzeczywistą nazwą kontenera.
Przed uruchomieniem zadania upewnij się, że kontener docelowy został utworzony i upewnij się, że nazwa kontenera w zadaniu jest zgodna z rzeczywistą nazwą kontenera.
"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\"]Błąd — błąd podczas pobierania zasobów dla zadania
Ten błąd może wystąpić z powodu wewnętrznych problemów z serwerem. Aby rozwiązać ten problem, skontaktuj się z pomoc techniczna firmy Microsoft, otwierając nowe żądanie pomocy technicznej w witrynie Azure Portal. W polu Typ problemu wybierz pozycję Migracja danych. W obszarze Podtyp problemu wybierz pozycję Kopiowanie kontenera wewnątrz konta.
"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