Aracılığıyla paylaş


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

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

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

Önkoş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
    

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

Not

Verileri aynı Azure Cosmos DB hesabı içinde kopyaladığınızda bu adım gerekli değildir.

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 kaynak kapsayıcının hedef hesabın kimliğine okuma erişimi vermesi 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
    

Kopyalama işi oluşturma

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

İlerlemeyi izleme

Aşağıdaki komutu kullanarak ilerleme durumunu izleyin.

az cosmosdb copy show `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName
  1. Toplam sayı – Herhangi bir zamanda kaynak kapsayıcıdaki toplam değişiklik sayısını (toplam belge + yeni değişiklikler) temsil eder.
  2. İşlenen sayısı – Kaynak kapsayıcının değişiklik akışından gelen ve kopyalama işi tarafından işlenen toplam olay sayısını temsil eder.

Kopyalama işini tamamlama

  1. İşlenen sayı toplam sayıdan büyük veya buna eşit olduğunda, kaynak kapsayıcıdaki güncelleştirmeleri kapatın ve kalan değişiklikleri temizlemek için 5-10 dakika bekleyin.
  2. Kopyalama işini ve ücretsiz işlem kaynaklarını tamamlamak için tamamlama API'sini çalıştırın; bu işlem, kalan değişiklikleri (varsa) hedef kapsayıcıya da yazar.
    az cosmosdb copy complete `
        --resource-group $destinationAccountRG `
        --account-name $destinationAccount `
        --job-name $jobName
  1. Gerekirse yeni (hedef) kapsayıcısını kullanmaya başlamak için istemci uygulamalarını güncelleştirin.

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 = ""
$sourceCollection = ""
$destinationDatabase = ""
$destinationCollection = ""

Kopyalama işi oluşturma

MongoDB hesabı için Azure Cosmos DB API'sinde koleksiyonu 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 

Not

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

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 = ""
$sourceKeySpace = ""
$sourceTable = ""
$destinationKeySpace = ""
$destinationTable = ""

Kopyalama işi oluşturma

Apache Cassandra için Azure Cosmos DB hesabı içindeki bir tabloyu 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 

Not

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

Kopyalama işlerini yönetme

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 kopyalama işlerini listeleme

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

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

Kopyalama işini duraklatma

Devam eden kopyalama işini duraklatmak için komutunu kullanabilirsiniz:

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

Kopyalama işini sürdürme

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

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

Kopyalama işini iptal etme

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

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

Kopyalama sorunları için destek alma

Kopyalama işiyle 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

  • Kapsayıcı kopyalama işleri hakkında daha fazla bilgi için bkz . İşleri kopyalama.