Bagikan melalui


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

  1. Mengatur konteks langganan tujuan
    az account set --subscription $destinationSubId
    
  2. Menambahkan identitas sistem pada akun tujuan
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG
    $principalId = ($identityOutput | ConvertFrom-Json).principalId
    
  3. Mengatur identitas default pada akun tujuan
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
    
  4. Mengatur konteks langganan sumber
    az account set --subscription $sourceSubId
    
  5. 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
    
  6. Mereset konteks langganan tujuan
    az account set --subscription $destinationSubId
    

Menggunakan identitas terkelola yang ditetapkan pengguna

  1. Menetapkan variabel identitas terkelola yang ditetapkan pengguna
    $userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
    
  2. Mengatur konteks langganan tujuan
    az account set --subscription $destinationSubId
    
  3. 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
    
  4. Mengatur identitas default pada akun tujuan
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
    
  5. Mengatur konteks langganan sumber
    az account set --subscription $sourceSubId
    
  6. 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
    
  7. 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
  1. Jumlah total – Ini menunjukkan jumlah total perubahan (total dokumen + perubahan baru) dalam kontainer sumber pada waktu tertentu.
  2. Jumlah yang diproses - Ini menunjukkan jumlah total peristiwa yang berasal dari umpan perubahan kontainer sumber yang telah diproses oleh pekerjaan penyalinan.

Menyelesaikan pekerjaan penyalinan

  1. 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.
  2. 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
  1. 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.