Membuat dan mengelola pekerjaan salinan kontainer di Azure Cosmos DB (Pratinjau)
Salin pekerjaan membantu membuat salinan kontainer di akun Azure Cosmos DB.
Artikel ini menjelaskan cara membuat, memantau, dan mengelola pekerjaan penyalinan menggunakan perintah Azure CLI.
Prasyarat
- Anda dapat menggunakan portal Cloud Shell untuk menjalankan perintah salin kontainer. Secara bergantian, Anda dapat menjalankan perintah secara lokal; pastikan Anda memiliki Azure CLI yang diunduh dan diinstal di komputer Anda.
- Saat ini, salinan kontainer hanya didukung di wilayah ini. Pastikan wilayah tulis akun Anda termasuk dalam daftar ini.
- Instal ekstensi pratinjau Azure Cosmos DB yang berisi perintah salin kontainer.
az extension add --name cosmosdb-preview
Mengatur variable shell
Pertama, atur semua variabel yang digunakan setiap skrip individual.
$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 = ""
Menetapkan izin baca
Catatan
Langkah ini tidak diperlukan jika Anda menyalin data dalam akun Azure Cosmos DB yang sama.
Saat menyalin data dari kontainer satu akun ke kontainer akun lain, diperlukan untuk memberikan akses baca kontainer sumber ke identitas akun tujuan untuk melakukan operasi penyalinan. Ikuti langkah-langkah di bawah ini untuk menetapkan izin baca yang diperlukan ke akun tujuan.
Menggunakan identitas terkelola Sistem
- Mengatur konteks langganan tujuan
az account set --subscription $destinationSubId
- Menambahkan identitas sistem pada akun tujuan
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG $principalId = ($identityOutput | ConvertFrom-Json).principalId
- Mengatur identitas default pada akun tujuan
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
- Mengatur konteks langganan sumber
az account set --subscription $sourceSubId
- Menambahkan penetapan peran pada akun sumber
# 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
- Mereset konteks langganan tujuan
az account set --subscription $destinationSubId
Menggunakan identitas terkelola yang ditetapkan pengguna
- Menetapkan variabel identitas terkelola yang ditetapkan pengguna
$userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
- Mengatur konteks langganan tujuan
az account set --subscription $destinationSubId
- Menambahkan identitas terkelola yang ditetapkan pengguna pada akun tujuan
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
- Mengatur identitas default pada akun tujuan
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
- Mengatur konteks langganan sumber
az account set --subscription $sourceSubId
- Menambahkan penetapan peran pada akun sumber
$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
- Mereset konteks langganan tujuan
az account set --subscription $destinationSubId
Membuat pekerjaan penyalinan
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
Memantau kemajuan
Pantau kemajuan menggunakan perintah di bawah ini.
az cosmosdb copy show `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
- Jumlah total – Ini menunjukkan jumlah total perubahan (total dokumen + perubahan baru) dalam kontainer sumber pada waktu tertentu.
- Jumlah yang diproses - Ini menunjukkan jumlah total peristiwa yang berasal dari umpan perubahan kontainer sumber yang telah diproses oleh pekerjaan penyalinan.
Menyelesaikan pekerjaan penyalinan
- Ketika jumlah yang diproses menjadi lebih besar dari atau sama dengan jumlah total, nonaktifkan pembaruan apa pun pada kontainer sumber dan tunggu 5-10 menit untuk menghapus perubahan yang tersisa.
- Jalankan API penyelesaian untuk menyelesaikan pekerjaan penyalinan dan sumber daya komputasi gratis, ini juga akan menulis perubahan yang tersisa (jika ada) ke kontainer tujuan.
az cosmosdb copy complete `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
- Perbarui aplikasi klien untuk mulai menggunakan kontainer (tujuan) baru jika diperlukan.
Mengatur variable shell
Pertama, atur semua variabel yang digunakan setiap skrip individual.
$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceDatabase = ""
$sourceCollection = ""
$destinationDatabase = ""
$destinationCollection = ""
Membuat pekerjaan penyalinan
Buat pekerjaan untuk menyalin koleksi dalam API Azure Cosmos DB untuk akun 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
Catatan
--job-name
harus unik untuk setiap pekerjaan dalam akun.
Mengatur variable shell
Pertama, atur semua variabel yang digunakan setiap skrip individual.
$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceKeySpace = ""
$sourceTable = ""
$destinationKeySpace = ""
$destinationTable = ""
Membuat pekerjaan penyalinan
Buat pekerjaan untuk menyalin tabel dalam akun Azure Cosmos DB for 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
Catatan
--job-name
harus unik untuk setiap pekerjaan dalam akun.
Mengelola pekerjaan penyalinan
Memantau kemajuan pekerjaan penyalinan
Lihat kemajuan dan status pekerjaan penyalinan:
az cosmosdb copy show `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Mencantumkan semua pekerjaan penyalinan yang dibuat di akun
Untuk mencantumkan semua pekerjaan penyalinan yang dibuat di akun:
az cosmosdb copy list `
--resource-group $destinationAccountRG `
--account-name $destinationAccount
Menjeda pekerjaan penyalinan
Untuk menjeda pekerjaan penyalinan yang sedang berlangsung, Anda dapat menggunakan perintah :
az cosmosdb copy pause `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Melanjutkan pekerjaan penyalinan
Untuk melanjutkan pekerjaan penyalinan yang sedang berlangsung, Anda dapat menggunakan perintah :
az cosmosdb copy resume `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Membatalkan pekerjaan penyalinan
Untuk membatalkan pekerjaan penyalinan yang sedang berlangsung, Anda dapat menggunakan perintah :
az cosmosdb copy cancel `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Mendapatkan dukungan untuk masalah penyalinan
Untuk masalah yang terkait dengan pekerjaan penyalinan, ajukan Permintaan Dukungan Baru dari portal Azure. Atur Jenis Masalah sebagai 'Migrasi Data' dan Subjenis Masalah sebagai 'Salinan kontainer'.
Langkah berikutnya
- Untuk informasi selengkapnya tentang pekerjaan penyalinan kontainer, lihat Menyalin pekerjaan.