Udostępnij za pośrednictwem


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

  1. Ustawianie kontekstu subskrypcji docelowej
    az account set --subscription $destinationSubId
    
  2. Dodawanie tożsamości systemowej na koncie docelowym
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG
    $principalId = ($identityOutput | ConvertFrom-Json).principalId
    
  3. Ustawianie domyślnej tożsamości na koncie docelowym
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
    
  4. Ustawianie kontekstu subskrypcji źródłowej
    az account set --subscription $sourceSubId
    
  5. 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
    
  6. Resetowanie kontekstu subskrypcji docelowej
    az account set --subscription $destinationSubId
    

Korzystanie z tożsamości zarządzanej przypisanej przez użytkownika

  1. Przypisywanie zmiennej tożsamości zarządzanej przypisanej przez użytkownika
    $userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
    
  2. Ustawianie kontekstu subskrypcji docelowej
    az account set --subscription $destinationSubId
    
  3. 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
    
  4. Ustawianie domyślnej tożsamości na koncie docelowym
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
    
  5. Ustawianie kontekstu subskrypcji źródłowej
    az account set --subscription $sourceSubId
    
  6. 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
    
  7. 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
  1. Łączna liczba — reprezentuje całkowitą liczbę zmian (łącznie dokument i wszelkie nowe zmiany) w kontenerze źródłowym w danym momencie.
  2. 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

  1. 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.
  2. 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
  1. 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ń.