Membuat dan mengelola pekerjaan salinan kontainer di Azure Cosmos DB (Pratinjau)

BERLAKU UNTUK: Nosql MongoDB Cassandra

Pekerjaan salinan kontainer membantu membuat salinan kontainer offline di akun Azure Cosmos DB.

Artikel ini menjelaskan cara membuat, memantau, dan mengelola pekerjaan salinan kontainer 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
    

Catatan

Pekerjaan penyalinan kontainer di seluruh akun Azure Cosmos DB hanya tersedia untuk akun NOSQL API. Pekerjaan penyalinan kontainer dalam akun Azure Cosmos DB tersedia untuk akun NoSQL, MongoDB, dan Cassandra API.

Membuat pekerjaan penyalinan kontainer untuk menyalin data dalam akun Azure Cosmos DB

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 = ""
$sourceContainer = ""
$destinationDatabase = ""
$destinationContainer = ""

Membuat pekerjaan penyalinan kontainer

API untuk akun NoSQL

Buat pekerjaan untuk menyalin kontainer dalam API Azure Cosmos DB untuk akun NoSQL:

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

API untuk akun Cassandra

Buat pekerjaan untuk menyalin kontainer dalam API Azure Cosmos DB untuk akun 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 

API untuk akun MongoDB

Buat pekerjaan untuk menyalin kontainer 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.

Membuat pekerjaan penyalinan kontainer untuk menyalin data di seluruh akun Azure Cosmos DB

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

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 kontainer

API untuk akun NoSQL

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

Mengelola pekerjaan salinan kontainer

Memantau kemajuan pekerjaan penyalinan kontainer

Lihat kemajuan dan status pekerjaan penyalinan:

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

Mencantumkan semua pekerjaan penyalinan kontainer yang dibuat di akun

Untuk mencantumkan semua pekerjaan penyalinan kontainer yang dibuat di akun:

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

Menjeda pekerjaan penyalinan kontainer

Untuk menjeda pekerjaan salinan kontainer yang sedang berlangsung, Anda dapat menggunakan perintah :

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

Melanjutkan pekerjaan penyalinan kontainer

Untuk melanjutkan pekerjaan salinan kontainer yang sedang berlangsung, Anda dapat menggunakan perintah :

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

Membatalkan pekerjaan penyalinan kontainer

Untuk membatalkan pekerjaan salinan kontainer yang sedang berlangsung, Anda dapat menggunakan perintah :

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

Mendapatkan dukungan untuk masalah salinan kontainer

Untuk masalah yang terkait dengan salinan Kontainer, 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 Pekerjaan penyalinan kontainer.