Tworzenie zadań kopiowania kontenerów i zarządzanie nimi w usłudze Azure Cosmos DB (wersja zapoznawcza)
Zadania kopiowania ułatwiają tworzenie kopii kontenerów na kontach usługi Azure Cosmos DB.
W tym artykule opisano sposób tworzenia, monitorowania i zarządzania zadaniami kopiowania przy użyciu poleceń interfejsu wiersza polecenia platformy Azure.
Wymagania wstępne
- Do uruchamiania poleceń kopiowania kontenerów można użyć portalu Cloud Shell . Alternatywnie możesz uruchomić polecenia lokalnie; Upewnij się, że na maszynie został pobrany i zainstalowany interfejs wiersza polecenia platformy Azure.
- Obecnie kopiowanie kontenera jest obsługiwane tylko w tych regionach. Upewnij się, że region zapisu konta należy do tej listy.
- Zainstaluj rozszerzenie usługi Azure Cosmos DB w wersji zapoznawczej zawierające polecenia kopiowania kontenerów.
az extension add --name cosmosdb-preview
Ustawianie zmiennych powłoki
Najpierw ustaw wszystkie zmienne używane przez poszczególne skrypty.
$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 = ""
Przypisywanie uprawnień do odczytu
Uwaga
Ten krok nie jest wymagany, jeśli kopiujesz dane na tym samym koncie usługi Azure Cosmos DB.
Podczas kopiowania danych z kontenera jednego konta do kontenera innego konta wymagane jest udzielenie dostępu do odczytu kontenera źródłowego tożsamości konta docelowego w celu wykonania operacji kopiowania. Wykonaj poniższe kroki, aby przypisać wymagane uprawnienie do odczytu do konta docelowego.
Korzystanie z tożsamości zarządzanej przez system
- Ustawianie kontekstu subskrypcji docelowej
az account set --subscription $destinationSubId
- Dodawanie tożsamości systemowej na koncie docelowym
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG $principalId = ($identityOutput | ConvertFrom-Json).principalId
- Ustawianie domyślnej tożsamości na koncie docelowym
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
- Ustawianie kontekstu subskrypcji źródłowej
az account set --subscription $sourceSubId
- Dodawanie przypisania roli na koncie źródłowym
# 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
- Resetowanie kontekstu subskrypcji docelowej
az account set --subscription $destinationSubId
Korzystanie z tożsamości zarządzanej przypisanej przez użytkownika
- Przypisywanie zmiennej tożsamości zarządzanej przypisanej przez użytkownika
$userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
- Ustawianie kontekstu subskrypcji docelowej
az account set --subscription $destinationSubId
- Dodawanie tożsamości zarządzanej przypisanej przez użytkownika na koncie docelowym
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
- Ustawianie domyślnej tożsamości na koncie docelowym
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
- Ustawianie kontekstu subskrypcji źródłowej
az account set --subscription $sourceSubId
- Dodawanie przypisania roli na koncie źródłowym
$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
- Resetowanie kontekstu subskrypcji docelowej
az account set --subscription $destinationSubId
Tworzenie zadania kopiowania
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
Monitorowanie postępu
Monitoruj postęp przy użyciu poniższego polecenia.
az cosmosdb copy show `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
- Łączna liczba — reprezentuje całkowitą liczbę zmian (łącznie dokument i wszelkie nowe zmiany) w kontenerze źródłowym w danym momencie.
- Liczba przetworzonych — reprezentuje całkowitą liczbę zdarzeń pochodzących z zestawienia zmian kontenera źródłowego, które zostały przetworzone przez zadanie kopiowania.
Wykonywanie zadania kopiowania
- Gdy przetworzona liczba staje się większa lub równa całkowitej liczbie, wyłącz wszystkie aktualizacje w kontenerze źródłowym i poczekaj 5–10 minut, aby opróżnić pozostałe zmiany.
- Uruchom interfejs API uzupełniania, aby zakończyć zadanie kopiowania i bezpłatne zasoby obliczeniowe. Spowoduje to również zapisanie pozostałych zmian (jeśli istnieją) do kontenera docelowego.
az cosmosdb copy complete `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
- Zaktualizuj aplikacje klienckie, aby w razie potrzeby rozpocząć korzystanie z nowego (docelowego) kontenera.
Ustawianie zmiennych powłoki
Najpierw ustaw wszystkie zmienne używane przez poszczególne skrypty.
$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceDatabase = ""
$sourceCollection = ""
$destinationDatabase = ""
$destinationCollection = ""
Tworzenie zadania kopiowania
Utwórz zadanie kopiowania kolekcji w ramach interfejsu API usługi Azure Cosmos DB dla konta bazy danych 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
Uwaga
--job-name
powinno być unikatowe dla każdego zadania w ramach konta.
Ustawianie zmiennych powłoki
Najpierw ustaw wszystkie zmienne używane przez poszczególne skrypty.
$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceKeySpace = ""
$sourceTable = ""
$destinationKeySpace = ""
$destinationTable = ""
Tworzenie zadania kopiowania
Utwórz zadanie kopiowania tabeli w usłudze Azure Cosmos DB dla konta 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
Uwaga
--job-name
powinno być unikatowe dla każdego zadania w ramach konta.
Zarządzanie zadaniami kopiowania
Monitorowanie postępu zadania kopiowania
Wyświetl postęp i stan zadania kopiowania:
az cosmosdb copy show `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Wyświetlanie listy wszystkich zadań kopiowania utworzonych na koncie
Aby wyświetlić listę wszystkich zadań kopiowania utworzonych na koncie:
az cosmosdb copy list `
--resource-group $destinationAccountRG `
--account-name $destinationAccount
Wstrzymywanie zadania kopiowania
Aby wstrzymać trwające zadanie kopiowania, możesz użyć polecenia :
az cosmosdb copy pause `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Wznów zadanie kopiowania
Aby wznowić trwające zadanie kopiowania, możesz użyć polecenia :
az cosmosdb copy resume `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Anulowanie zadania kopiowania
Aby anulować trwające zadanie kopiowania, możesz użyć polecenia :
az cosmosdb copy cancel `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Uzyskiwanie pomocy technicznej dotyczącej problemów z kopiowaniem
W przypadku problemów związanych z zadaniem kopiowania zgłoś nowe żądanie pomocy technicznej w witrynie Azure Portal. Ustaw typ problemu jako "Migracja danych" i Podtyp problemu jako "Kopia kontenera".
Następne kroki
- Aby uzyskać więcej informacji na temat zadań kopiowania kontenerów, zobacz Kopiowanie zadań.