Azure Cosmos DB'de kapsayıcı kopyalama işleri oluşturma ve yönetme (Önizleme)

ŞUNLAR IÇIN GEÇERLIDIR: Nosql MongoDB Cassandra

Kapsayıcı kopyalama işleri , Azure Cosmos DB hesaplarında kapsayıcıların çevrimdışı kopyalarının oluşturulmasına yardımcı olur.

Bu makalede, Azure CLI komutlarını kullanarak kapsayıcı kopyalama işlerinin nasıl oluşturulacağı, izleneceği ve yönetileceğini açıklanmaktadır.

Ön koşullar

  • Kapsayıcı kopyalama komutlarını çalıştırmak için Cloud Shell portalını kullanabilirsiniz. Alternatif olarak, komutları yerel olarak çalıştırabilirsiniz; Azure CLI'nın makinenize indirildiğinden ve yüklendiğinden emin olun.
  • Şu anda kapsayıcı kopyalama yalnızca bu bölgelerde desteklenmektedir. Hesabınızın yazma bölgesinin bu listeye ait olduğundan emin olun.
  • Kapsayıcı kopyalama komutlarını içeren Azure Cosmos DB önizleme uzantısını yükleyin.
    az extension add --name cosmosdb-preview
    

Dekont

Azure Cosmos DB hesaplarında kapsayıcı kopyalama işi yalnızca NoSQL API hesabı için kullanılabilir. Azure Cosmos DB hesabındaki kapsayıcı kopyalama işi NoSQL, MongoDB ve Cassandra API hesapları için kullanılabilir.

Azure Cosmos DB hesabındaki verileri kopyalamak için kapsayıcı kopyalama işi oluşturma

Kabuk değişkenlerini ayarlama

İlk olarak, her bir betiğin kullandığı tüm değişkenleri ayarlayın.

$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceDatabase = ""
$sourceContainer = ""
$destinationDatabase = ""
$destinationContainer = ""

Kapsayıcı kopyalama işi oluşturma

NoSQL hesabı için API

NoSQL hesabı için Azure Cosmos DB API'sinde bir kapsayıcıyı kopyalamak için bir iş oluşturun:

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

Cassandra hesabı için API

Cassandra hesabı için Azure Cosmos DB API'sinde bir kapsayıcıyı kopyalamak için iş oluşturun:

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 

MongoDB hesabı için API

MongoDB hesabı için Azure Cosmos DB API'sinde bir kapsayıcıyı kopyalamak için bir iş oluşturun:

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 

Dekont

--job-name bir hesaptaki her iş için benzersiz olmalıdır.

Azure Cosmos DB hesapları arasında veri kopyalamak için kapsayıcı kopyalama işi oluşturma

Kabuk değişkenlerini ayarlama

İlk olarak, her bir betiğin kullandığı tüm değişkenleri ayarlayın.

$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 = ""

Okuma izni atama

Bir hesabın kapsayıcısından başka bir hesabın kapsayıcısına veri kopyalarken. Kopyalama işlemini gerçekleştirmek için hedef hesabın kimliğine kaynak kapsayıcıya okuma erişimi vermek gerekir. Hedef hesaba gerekli okuma iznini atamak için aşağıdaki adımları izleyin.

Sistem tarafından yönetilen kimliği kullanma

  1. Hedef abonelik bağlamı ayarlama
    az account set --subscription $destinationSubId
    
  2. Hedef hesapta sistem kimliği ekleme
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG
    $principalId = ($identityOutput | ConvertFrom-Json).principalId
    
  3. Hedef hesapta varsayılan kimliği ayarlama
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
    
  4. Kaynak abonelik bağlamı ayarlama
    az account set --subscription $sourceSubId
    
  5. Kaynak hesapta rol ataması ekleme
    # 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. Hedef abonelik bağlamı sıfırla
    az account set --subscription $destinationSubId
    

Kullanıcı tarafından atanan yönetilen kimliği kullanma

  1. Kullanıcı tarafından atanan yönetilen kimlik değişkenlerini atama
    $userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
    
  2. Hedef abonelik bağlamı ayarlama
    az account set --subscription $destinationSubId
    
  3. Hedef hesaba kullanıcı tarafından atanan yönetilen kimlik ekleme
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId
    $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
    
  4. Hedef hesapta varsayılan kimliği ayarlama
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
    
  5. Kaynak abonelik bağlamı ayarlama
    az account set --subscription $sourceSubId
    
  6. Kaynak hesapta rol ataması ekleme
    $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. Hedef abonelik bağlamı sıfırla
    az account set --subscription $destinationSubId
    

Kapsayıcı kopyalama işi oluşturma

NoSQL hesabı için API

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

Kapsayıcı kopyalama işlerini yönetme

Kapsayıcı kopyalama işinin ilerleme durumunu izleme

Kopyalama işinin ilerleme durumunu ve durumunu görüntüleyin:

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

Bir hesapta oluşturulan tüm kapsayıcı kopyalama işlerini listeleme

Bir hesapta oluşturulan tüm kapsayıcı kopyalama işlerini listelemek için:

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

Kapsayıcı kopyalama işini duraklatma

Devam eden bir kapsayıcı kopyalama işini duraklatmak için komutunu kullanabilirsiniz:

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

Kapsayıcı kopyalama işini sürdürme

Devam eden bir kapsayıcı kopyalama işini sürdürmek için komutunu kullanabilirsiniz:

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

Kapsayıcı kopyalama işini iptal etme

Devam eden bir kapsayıcı kopyalama işini iptal etmek için komutunu kullanabilirsiniz:

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

Kapsayıcı kopyalama sorunları için destek alma

Kapsayıcı kopyalamayla ilgili sorunlar için Azure portalından Yeni Destek İsteği oluşturun. Sorun Türü'nü'Veri Geçişi' ve Sorun alt türünü 'Kapsayıcı kopyası' olarak ayarlayın.

Sonraki adımlar