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
- Hedef abonelik bağlamı ayarlama
az account set --subscription $destinationSubId
- Hedef hesapta sistem kimliği ekleme
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG $principalId = ($identityOutput | ConvertFrom-Json).principalId
- Hedef hesapta varsayılan kimliği ayarlama
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
- Kaynak abonelik bağlamı ayarlama
az account set --subscription $sourceSubId
- 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
- Hedef abonelik bağlamı sıfırla
az account set --subscription $destinationSubId
Kullanıcı tarafından atanan yönetilen kimliği kullanma
- Kullanıcı tarafından atanan yönetilen kimlik değişkenlerini atama
$userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
- Hedef abonelik bağlamı ayarlama
az account set --subscription $destinationSubId
- 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
- Hedef hesapta varsayılan kimliği ayarlama
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
- Kaynak abonelik bağlamı ayarlama
az account set --subscription $sourceSubId
- 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
- 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
- Toplam sayı – Herhangi bir zamanda kaynak kapsayıcıdaki toplam değişiklik sayısını (toplam belge + yeni değişiklikler) temsil eder.
- İş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
- İş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.
- 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
- 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.