Tworzenie zadań kopiowania kontenerów i zarządzanie nimi w usłudze Azure Cosmos DB (wersja zapoznawcza)

DOTYCZY: Nosql Mongodb Cassandra

Zadania kopiowania kontenerów ułatwiają tworzenie kopii kontenerów w trybie offline na kontach usługi Azure Cosmos DB.

W tym artykule opisano sposób tworzenia, monitorowania i zarządzania zadaniami kopiowania kontenerów 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
    

Uwaga

Zadanie kopiowania kontenerów na kontach usługi Azure Cosmos DB jest dostępne tylko dla konta interfejsu API NoSQL. Zadanie kopiowania kontenera w ramach konta usługi Azure Cosmos DB jest dostępne dla kont interfejsu API NoSQL, MongoDB i Cassandra.

Tworzenie zadania kopiowania kontenera w celu kopiowania danych na koncie usługi Azure Cosmos DB

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 = ""
$sourceContainer = ""
$destinationDatabase = ""
$destinationContainer = ""

Tworzenie zadania kopiowania kontenera

Interfejs API dla konta NoSQL

Utwórz zadanie kopiowania kontenera w ramach interfejsu API usługi Azure Cosmos DB dla konta NoSQL:

az cosmosdb copy create `
    --resource-group $destinationRG `
    --job-name $jobName `
    --dest-account $destinationAccount `
    --src-account $sourceAccount `
    --dest-nosql database=$destinationDatabase container=$destinationContainer `
    --src-nosql database=$sourceDatabase container=$sourceContainer

Interfejs API dla konta Cassandra

Utwórz zadanie kopiowania kontenera w interfejsie API usługi Azure Cosmos DB dla konta 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 

Interfejs API dla konta bazy danych MongoDB

Utwórz zadanie kopiowania kontenera 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.

Tworzenie zadania kopiowania kontenera w celu kopiowania danych między kontami usługi Azure Cosmos DB

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

Podczas kopiowania danych z kontenera jednego konta do kontenera innego konta. Aby umożliwić wykonywanie operacji kopiowania, wymagany jest dostęp do odczytu kontenera źródłowego do tożsamości konta docelowego. 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 kontenera

Interfejs API dla konta NoSQL

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

Zarządzanie zadaniami kopiowania kontenerów

Monitorowanie postępu zadania kopiowania kontenera

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 kontenera utworzonych na koncie

Aby wyświetlić listę wszystkich zadań kopiowania kontenera utworzonych na koncie:

az cosmosdb copy list `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount

Wstrzymywanie zadania kopiowania kontenera

Aby wstrzymać trwające zadanie kopiowania kontenerów, możesz użyć polecenia :

az cosmosdb copy pause `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

Wznawianie zadania kopiowania kontenera

Aby wznowić trwające zadanie kopiowania kontenerów, możesz użyć polecenia :

az cosmosdb copy resume `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

Anulowanie zadania kopiowania kontenera

Aby anulować trwające zadanie kopiowania kontenerów, 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 kontenerów

W przypadku problemów związanych z kopiowaniem kontenera 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 Zadania kopiowania kontenerów.