إنشاء وإدارة مهام نسخ الحاوية في Azure Cosmos DB (معاينة)

تساعد مهام النسخ في إنشاء نسخ من الحاويات في حسابات Azure Cosmos DB.

توضح هذه المقالة كيفية إنشاء مهام النسخ ومراقبتها وإدارتها باستخدام أوامر Azure CLI.

المتطلبات الأساسية

  • يمكنك استخدام المدخل Cloud Shell لتشغيل أوامر نسخ الحاوية. بدلا من ذلك، يمكنك تشغيل الأوامر محليا؛ تأكد من تنزيل Azure CLI وتثبيته على جهازك.
  • حاليًا، يتم دعم نسخ الحاوية فقط في هذه المناطق. تأكد من أن منطقة الكتابة في حسابك تنتمي إلى هذه القائمة.
  • تثبيت ملحق معاينة Azure Cosmos DB الذي يحتوي على أوامر نسخ الحاوية.
    az extension add --name cosmosdb-preview
    

تعيين متغيرات shell

أولا، قم بتعيين كافة المتغيرات التي يستخدمها كل برنامج نصي فردي.

$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 = ""

تعيين إذن القراءة

إشعار

هذه الخطوة غير مطلوبة إذا كنت تقوم بنسخ البيانات داخل نفس حساب Azure Cosmos DB.

أثناء نسخ البيانات من حاوية حساب إلى حاوية حساب آخر، يلزم منح حق الوصول للقراءة إلى حاوية المصدر إلى هوية حساب الوجهة لتنفيذ عملية النسخ. اتبع الخطوات أدناه لتعيين إذن القراءة المطلوب لحساب الوجهة.

استخدام الهوية المدارة من قبل النظام

  1. تعيين سياق اشتراك الوجهة
    az account set --subscription $destinationSubId
    
  2. إضافة هوية النظام على حساب الوجهة
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG
    $principalId = ($identityOutput | ConvertFrom-Json).principalId
    
  3. تعيين الهوية الافتراضية على حساب الوجهة
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
    
  4. تعيين سياق اشتراك المصدر
    az account set --subscription $sourceSubId
    
  5. إضافة تعيين دور على حساب المصدر
    # 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. إعادة تعيين سياق الاشتراك الوجهة
    az account set --subscription $destinationSubId
    

استخدام الهوية المدارة المعينة من قبل المستخدم

  1. تعيين متغير هوية مدارة يعينها المستخدم
    $userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
    
  2. تعيين سياق اشتراك الوجهة
    az account set --subscription $destinationSubId
    
  3. إضافة هوية مدارة معينة من قبل المستخدم على حساب الوجهة
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId
    $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
    
  4. تعيين الهوية الافتراضية على حساب الوجهة
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
    
  5. تعيين سياق اشتراك المصدر
    az account set --subscription $sourceSubId
    
  6. إضافة تعيين دور على حساب المصدر
    $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. إعادة تعيين سياق الاشتراك الوجهة
    az account set --subscription $destinationSubId
    

إنشاء مهمة نسخ

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

مراقبة التقدم

مراقبة التقدم باستخدام الأمر أدناه.

az cosmosdb copy show `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName
  1. العدد الإجمالي – يمثل العدد الإجمالي للتغييرات (إجمالي المستند + أي تغييرات جديدة) في الحاوية المصدر في أي وقت.
  2. العدد المعالج - يمثل العدد الإجمالي للأحداث القادمة من موجز تغيير حاوية المصدر التي تمت معالجتها بواسطة مهمة النسخ.

إكمال مهمة النسخ

  1. عندما يصبح العدد المعالج أكبر من العدد الإجمالي أو مساويا له، قم بإيقاف تشغيل أي تحديثات على الحاوية المصدر وانتظر لمدة 5-10 دقائق لمسح أي تغييرات متبقية.
  2. قم بتشغيل واجهة برمجة تطبيقات الإكمال لإنهاء مهمة النسخ وموارد الحوسبة المجانية، سيؤدي ذلك أيضا إلى كتابة التغييرات المتبقية (إن وجدت) إلى الحاوية الوجهة.
    az cosmosdb copy complete `
        --resource-group $destinationAccountRG `
        --account-name $destinationAccount `
        --job-name $jobName
  1. قم بتحديث تطبيقات العميل لبدء استخدام الحاوية الجديدة (الوجهة) إذا لزم الأمر.

تعيين متغيرات shell

أولا، قم بتعيين كافة المتغيرات التي يستخدمها كل برنامج نصي فردي.

$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceDatabase = ""
$sourceCollection = ""
$destinationDatabase = ""
$destinationCollection = ""

إنشاء مهمة نسخ

إنشاء مهمة لنسخ مجموعة داخل واجهة برمجة تطبيقات Azure Cosmos DB لحساب 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 

إشعار

--job-name يجب أن يكون فريدا لكل وظيفة داخل حساب.

تعيين متغيرات shell

أولا، قم بتعيين كافة المتغيرات التي يستخدمها كل برنامج نصي فردي.

$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceKeySpace = ""
$sourceTable = ""
$destinationKeySpace = ""
$destinationTable = ""

إنشاء مهمة نسخ

إنشاء مهمة لنسخ جدول داخل Azure Cosmos DB لحساب 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 

إشعار

--job-name يجب أن يكون فريدا لكل وظيفة داخل حساب.

إدارة مهام النسخ

مراقبة تقدم مهمة النسخ

عرض التقدم وحالة وظيفة النسخ:

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

سرد جميع مهام النسخ التي تم إنشاؤها في حساب

لسرد جميع مهام النسخ التي تم إنشاؤها في حساب:

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

إيقاف مهمة النسخ مؤقتا

لإيقاف مهمة النسخ المستمر مؤقتا، يمكنك استخدام الأمر :

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

استئناف مهمة النسخ

لاستئناف مهمة نسخ مستمرة، يمكنك استخدام الأمر :

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

إلغاء مهمة نسخ

لإلغاء مهمة نسخ مستمرة، يمكنك استخدام الأمر :

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

الحصول على دعم لمشكلات النسخ

بالنسبة للمشكلات المتعلقة بمهمة النسخ، قم برفع طلب دعم جديد من مدخل Microsoft Azure. قم بتعيين نوع المشكلة ك "ترحيل البيانات" ونوع المشكلة الفرعي ك "نسخة حاوية".

الخطوات التالية

  • لمزيد من المعلومات حول مهام نسخ الحاوية، راجع نسخ المهام.