البرنامج التعليمي: ترحيل PostgreSQL إلى قاعدة بيانات Azure ل PostgreSQL عبر الإنترنت باستخدام DMS (كلاسيكي) عبر Azure CLI

يمكنك استخدام Azure Database Migration Service لترحيل قواعد البيانات من مثيل PostgreSQL الداخلي إلىAzure Database من أجل PostgreSQL مع الحد الأدنى من وقت توقف التطبيق. بمعنى آخر، يمكن تحقيق الترحيل بأقل وقت تعطل للتطبيق. في هذا البرنامج التعليمي، يمكنك ترحيل قاعدة بيانات نموذج DVD Rental من مثيل داخلي من PostgreSQL 9.6 إلى Azure Database من أجل PostgreSQL باستخدام نشاط الترحيل عبر الإنترنت في Azure Database Migration Service.

في هذا البرنامج التعليمي، تتعلم كيفية:

  • ترحيل مخطط النموذج باستخدام الأداة المساعدة pg_dump.
  • ينشئ القالب مثيلاً لـ Azure Database Migration Service.
  • إنشاء مشروع ترحيل في Azure Database Migration Service.
  • تشغيل الترحيل.
  • مراقبة الترحيل.

إشعار

يتطلب استخدام Azure Database Migration Service للقيام بالترحيل عبر الإنترنت إنشاء مثيل استنادًا إلى Premium pricing tier. نقوم بتشفير القرص لمنع سرقة البيانات في أثناء عملية الترحيل.

هام

للحصول على تجربة ترحيل مثالية، توصي Microsoft بإنشاء مثيل لـ Azure Database Migration Service في نفس منطقة Azure مثل قاعدة البيانات الخاصة بالهدف. يمكن أن يؤدي نقل البيانات عبر الأماكن أو المناطق الجغرافية إلى إبطاء عملية الترحيل وإدخال أخطاء.

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

لإكمال هذا البرنامج التعليمي، تحتاج إلى:

  • قم بتنزيل وتثبيت إصدار مجتمع PostgreSQL 9.4 أو 9.5 أو 9.6 أو 10. يجب أن يكون إصدار PostGreSQL Server المصدر 9.4 أو 9.5 أو 9.6 أو 10 أو 11 أو 12 أو 13. لمزيد من المعلومات، راجع إصدارات قاعدة بيانات PostgreSQL المعتمدة.

    لاحظ أيضًا أن قاعدة بيانات Azure المستهدفة لإصدار PostgreSQL ينبغي أن تكون مساوية لإصدار PostgreSQL المحلي أو أحدث منه. على سبيل المثال، يمكن لـ PostgreSQL 9.6 الترحيل إلى Azure Database لـ PostgreSQL 9.6 أو 10 أو 11 فقط، ولكن ليس إلى Azure Database لـ PostgreSQL 9.5.

  • إنشاء مثيل في Azure Database لخادم PostgreSQL أو إنشاء Azure Database لخادم PostgreSQL - Hyperscale (Citus).

  • قم بإنشاء Microsoft Azure Virtual Network for Azure Database Migration Service باستخدام نموذج نشر Azure Resource Manager، والذي يوفر اتصالًا من موقع إلى موقع بالخوادم المصدر المحلية باستخدام إما ExpressRoute أو VPN. لمزيد من المعلومات حول إنشاء شبكة افتراضية، راجع Virtual Network Documentationوخاصة مقالات التشغيل السريع التي تحتوي على التفاصيل خطوة بخطوة.

    إشعار

    في أثناء إعداد الشبكة الظاهرية، في حال كنت تستخدم ExpressRoute مع شبكة الاتصال النظير لـ Microsoft، قم بإضافةنقاط نهاية الخدمة التالية إلى الشبكة الفرعية التي سيتم توفير الخدمة فيها:

    • نقطة نهاية قاعدة البيانات الهدف (على سبيل المثال، نقطة نهاية SQL ونقطة نهاية Azure Cosmos DB وما إلى ذلك)
    • نقطة نهاية التخزين
    • نقطة نهاية ناقل الخدمة

    هذا التكوين ضروري لأن Azure Database Migration Service تفتقر إلى الاتصال بالإنترنت.

  • تأكد من أن قواعد Network Security Group (NSG) لشبكتك الظاهرية لا تحظر المنفذ الصادر 443 من ServiceTag لـ ServiceBus والتخزين وAzureMonitor. لمزيد من التفاصيل عن تصفية نسبة استخدام الشبكة للشبكة الظاهرية الخاصة بمجموعة أمان الشبكة (NSG)، راجع مقالتصفية نسبة استخدام الشبكة باستخدام مجموعات أمان الشبكة.

  • تكوين جدار حماية Windows للوصول إلى مشغل قاعدة البيانات.

  • افتح جدار حماية Windows للسماح لـ Azure Database Migration Service بالوصول إلى خادم PostgreSQL المصدر، والذي يكون منفذ TCP 5432 افتراضيًا.

  • عند استخدام جهاز جدار الحماية أمام قاعدة (قواعد) البيانات المصدر، قد تحتاج إلى إضافة قواعد جدار الحماية للسماح إلى Azure Database Migration Service بالوصول إلى قاعدة (قواعد) البيانات المصدرة للترحيل.

  • إنشاء قاعدة جدار حماية على مستوى الملقم من أجل Azure Database لـ PostgreSQL للسماح إلى Azure Database Migration Service بالوصول إلى قواعد البيانات المستهدفة. توفير نطاق الشبكة الفرعية للشبكة الظاهرية المستخدمة لـ Azure Database Migration Service.

  • هناك طريقتا استدعاء CLI:

    • في الزاوية العلوية اليمنى من مدخل Azure، حدد زر «Cloud Shell»:

      حدد زر «Cloud Shell» في مدخل Azure

    • قم بتثبيت وتشغيل CLI محليًا. يلزم إصدار CLI 2.18 أو أعلى من أداة سطر الأوامر من أجل إدارة موارد Azure المطلوبة لهذا الترحيل.

      لتحميل CLI، اتبع الإرشادات الواردة في المقالة «Install Azure CLI». تسرد المقالة أيضًا الأنظمة الأساسية التي تدعم Azure CLI.

      لـ «set up Windows Subsystem for Linux (WSL)»، اتبع التعليمات في «Windows 10 Installation Guide»

  • تمكين النسخ المتماثل المنطقي على خادم المصدر، عن طريق تحرير ملف postgresql.config وإعداد المعلمات التالية:

    • wal_level = منطقي
    • max_replication_slots = [عدد الفتحات]، نوصي بضبط الإعداد إلى خمس فتحات
    • max_wal_senders =[عدد المهام المتزامنة] - تعين معلمة max_wal_senders عدد المهام المتزامنة التي يمكن تشغيلها، والتوصية بإعدادها إلى 10 مهام

ترحيل مخطط النموذج

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

  1. استخدم الأمر «pg_dump-s» لإنشاء ملف تفريغ المخطط لقاعدة بيانات.

    pg_dump -O -h hostname -U db_username -d db_name -s > your_schema.sql
    

    على سبيل المثال، لتفريغ قاعدة بيانات dvdrental ملف المخطط:

    pg_dump -O -h localhost -U postgres -d dvdrental -s  > dvdrentalSchema.sql
    

    لمزيد من المعلومات حول استخدام الأداة المساعدة pg_dump، راجع الأمثلة في البرنامج التعليمي pg-dump.

  2. إنشاء قاعدة بيانات فارغة في البيئة الهدف الخاص بك، وهو قاعدة بيانات Azure لـ PostgreSQL.

    للحصول على تفاصيل حول كيفية الاتصال وإنشاء قاعدة بيانات، راجع مقالة إنشاء Azure Database لخادم PostgreSQL في مدخل Azure أو إنشاء Azure Database لخادم PostgreSQL - Hyperscale (Citus) في مدخل Azure.

  3. استيراد المخطط إلى قاعدة البيانات المستهدفة الذي قمت بإنشائها عن طريق استعادة ملف المخطط الاحتياطي.

    psql -h hostname -U db_username -d db_name < your_schema.sql 
    

    على سبيل المثال:

    psql -h mypgserver-20170401.postgres.database.azure.com  -U postgres -d dvdrental < dvdrentalSchema.sql
    

إشعار

تتعامل خدمة الترحيل داخليًّا مع تمكين/ تعطيل المفاتيح والمشغلات الخارجية لضمان ترحيل بيانات موثوق وقوي. ونتيجة لذلك، لا داعي للقلق بشأن إجراء أي تعديلات على مخطط قاعدة البيانات الهدف.

توفير مثيل DMS باستخدام Azure CLI

  1. تثبيت ملحق مزامنة dms:

    • قم بتسجيل الدخول إلى Azure باستخدام الأمر التالي:

      az login
      
    • عند المطالبة بذلك، افتح مستعرض ويب وأدخل رمزًا لمصادقة جهازك. اتبع الإرشادات كما هو موضح.

    • ترحيل PostgreSQL عبر الإنترنت متوفر الآن خلال حزمة CLI العادية (إصدار 2.18.0 وأعلى) دون الحاجة إلى ملحق dms-preview. إذا قمت بتثبيت الملحق في الماضي، يمكنك إزالته باستخدام الخطوات التالية:

      • للتحقق مما إذا كان لديك ملحق dms-preview لتثبيته بالفعل، قم بتشغيل الأمر التالي:

        az extension list -o table
        
      • إذا تم تثبيت dms-previewالملحق، ثم تم إلغاء التثبيت، فقم بتنفيذ الأمر التالي:

        az extension remove --name dms-preview
        
      • للتحقق من إلغاء تثبيت dms-preview الملحق بشكل صحيح، قم بتشغيل الأمر التالي ويجب ألا تشاهد dms-preview الملحق في القائمة:

        az extension list -o table
        

      هام

      dms-preview قد لا تزال هناك حاجة إلى ملحق مسارات الترحيل الأخرى المدعومة من Azure DMS. الرجاء التحقق من وثائق مسار الترحيل المحدد لتحديد ما إذا كانت هناك حاجة إلى الملحق. تغطي هذه الوثائق متطلبات الملحق، خاصةً إلى PostgreSQL وAzure Database من أجل PostgreSQL عبر الإنترنت.

    • في أي وقت، عرض كافة الأوامر المدعومة في DMS عن طريق التشغيل:

      az dms -h
      
    • إذا كان لديك العديد من اشتراكات Azure، فقم بتشغيل الأمر التالي لتعيين الاشتراك الذي تريد استخدامه لتوفير مثيل خدمة DMS.

      az account set -s 97181df2-909d-420b-ab93-1bff15acb6b7
      
  2. توفير مثيل DMS بواسطة تشغيل الأمر التالي:

    az dms create -l <location> -n <newServiceName> -g <yourResourceGroupName> --sku-name Premium_4vCores --subnet/subscriptions/{vnet subscription id}/resourceGroups/{vnet resource group}/providers/Microsoft.Network/virtualNetworks/{vnet name}/subnets/{subnet name} –tags tagName1=tagValue1 tagWithNoValue
    

    على سبيل المثال، سوف يقوم الأمر التالي بإنشاء خدمة في:

    • الموقع: شرق US2
    • الاشتراك: 97181df2-909d-420b-ab93-1bff15acb6b7
    • اسم مجموعة الموارد: PostgresDemo
    • اسم خدمة DMS: PostgresCLI
    az dms create -l eastus2 -g PostgresDemo -n PostgresCLI --subnet /subscriptions/97181df2-909d-420b-ab93-1bff15acb6b7/resourceGroups/ERNetwork/providers/Microsoft.Network/virtualNetworks/AzureDMS-CORP-USC-VNET-5044/subnets/Subnet-1 --sku-name Premium_4vCores
    

    يستغرق حوالي 10-12 دقيقة لإنشاء مثيل خدمة DMS.

  3. لتعريف عنوان IP عامل DMS بحيث يمكنك إضافته إلى ملف Postgres pg_hba.conf، قم بتشغيل الأمر التالي:

    az network nic list -g <ResourceGroupName>--query '[].ipConfigurations | [].privateIpAddress'
    

    على سبيل المثال:

    az network nic list -g PostgresDemo --query '[].ipConfigurations | [].privateIpAddress'
    

    يجب أن تحصل على نتيجة مشابهة للعنوان التالي:

    [
      "172.16.136.18"
    ]
    
  4. إضافة عنوان IP لعامل DMS إلى ملف Postgres pg_hba.conf.

    • يحيط علمًا بعنوان DMS IP بعد الانتهاء من توفيره في DMS.

    • إضافة عنوان IP إلى ملف pg_hba.conf على المصدر، المشابهة إلى الإدخال التالي:

      host     all            all        172.16.136.18/10    md5
      host     replication    postgres   172.16.136.18/10    md5
      
  5. بعد ذلك، إنشاء مشروع ترحيل PostgreSQL عن طريق تشغيل الأمر التالي:

    az dms project create -l <location> -g <ResourceGroupName> --service-name <yourServiceName> --source-platform PostgreSQL --target-platform AzureDbforPostgreSQL -n <newProjectName>
    

    على سبيل المثال، يقوم الأمر التالي بإنشاء مشروع باستخدام هذه المعلمات:

    • الموقع: غرب وسط الولايات المتحدة
    • اسم مجموعة الموارد: PostgresDemo
    • اسم الخدمة: PostgresCLI
    • اسم المشروع: PGMigration
    • نظام الأساسي للمصدر: PostgreSQL
    • النظام الأساسي المستهدف: AzureDbForPostgreSql
    az dms project create -l westcentralus -n PGMigration -g PostgresDemo --service-name PostgresCLI --source-platform PostgreSQL --target-platform AzureDbForPostgreSql
    
  6. إنشاء مهمة ترحيل PostgreSQL باستخدام الخطوات التالية.

    تتضمن هذه الخطوة استخدام «source IP وUserID وpassword و destination IP و UserID وpassword وtask type » للاتصال.

    • لمشاهدة قائمة كاملة من الخيارات، قم بتشغيل الأمر:

      az dms project task create -h
      

      بالنسبة إلى كل من اتصال المصدر والاتصال المستهدف، تشير معلمة الإدخال إلى ملف json يحتوي على قائمة الكائنات.

      تنسيق كائن JSON الاتصال لاتصالات PostgreSQL.

      {
          // if this is missing or null, you will be prompted
          "userName": "user name",
          // if this is missing or null (highly recommended) you will  be prompted  
          "password": null,
          "serverName": "server name",
          // if this is missing, it will default to the 'postgres' database
          "databaseName": "database name",
          // if this is missing, it will default to 5432 
          "port": 5432                
      }
      

      هناك أيضًا «ملف json» كخيار قاعدة بيانات يدرج كائنات json. لـ PostgreSQL، يظهر تنسيق خيارات قاعدة بيانات كائن JSON أدناه:

      [
          {
              "name": "source database",
              "target_database_name": "target database",
              "selectedTables": [
                  "schemaName1.tableName1",
                  ...n
              ]
          },
          ...n
      ]
      
    • لإنشاء json اتصال المصدر، قم بفتح المفكرة ونسخ json التالية ولصقه في الملف. حفظ الملف في C:\DMS\source.js بعد تعديله وفقًا لخادم المصدر.

      {
          "userName": "postgres",    
          "password": null,
          "serverName": "13.51.14.222",
          "databaseName": "dvdrental", 
          "port": 5432                
      }
      
    • لإنشاء json الاتصال المستهدف، قم بفتح مفكرة التدوين ونسخ json التالية ولصقه في الملف. حفظ الملف في C:\DMS\target.js بعد تعديله وفقًا لخادمك المستهدف.

      {
          "userName": " dms@builddemotarget",    
          "password": null,           
          "serverName": " builddemotarget.postgres.database.azure.com",
          "databaseName": "inventory", 
          "port": 5432                
      }
      
    • إنشاء خيارات قاعدة بيانات ملف json يسرد المخزون وتعيين قواعد البيانات للترحيل:

      • إنشاء قائمة بالجداول التي سيتم ترحيلها أو يمكنك استخدام استعلام SQL لإنشاء القائمة من قاعدة البيانات المصدر. يُقدم الاستعلام عن النموذج لإنشاء قائمة الجداول أدناه فقط كمثال. إذا كنت تستخدم هذا الاستعلام، يرجى تذكر إزالة الفاصلة الأخيرة في نهاية اسم الجدول الأخير لتصبح صفيف JSON ساريًا.

        SELECT
            FORMAT('%s,', REPLACE(FORMAT('%I.%I', schemaname, tablename), '"', '\"')) AS SelectedTables
        FROM 
            pg_tables
        WHERE 
            schemaname NOT IN ('pg_catalog', 'information_schema');
        
      • إنشاء ملف json خيارات قاعدة البيانات مع إدخال واحد لكل قاعدة بيانات مع المصدر وأسماء قاعدة البيانات الهدف وقائمة الجداول المحددة ليتم ترحيلها. يمكنك استخدام مخرجات الاستعلام عن SQL أعلاه لملء صفيف "selectedTables". يرجى ملاحظة أنه إذا كانت قائمة الجداول المحددة فارغة، فستتضمن الخدمة كافة جداول الترحيل التي تحتوي على مخطط مطابق وأسماء الجداول.

        [
            {
                "name": "dvdrental",
                "target_database_name": "dvdrental",
                "selectedTables": [
                    "schemaName1.tableName1",
                    "schemaName1.tableName2",                    
                    ...
                    "schemaNameN.tableNameM"
                ]
            },
            ... n
        ]
        
    • تشغيل الأمر التالي الذي يتم في اتصال المصدر والاتصال المستهدف وملفات json لخيارات قاعدة البيانات.

      az dms project task create -g PostgresDemo --project-name PGMigration --source-connection-json c:\DMS\source.json --database-options-json C:\DMS\option.json --service-name PostgresCLI --target-connection-json c:\DMS\target.json --task-type OnlineMigration -n runnowtask    
      

    عند هذه النقطة، لقد قدمت بنجاح مهمة الترحيل.

  7. لعرض التقدم المحرز في المهمة، قم بتشغيل الأمر التالي:

    • للاطلاع على حالة المهمة العامة باختصار

      az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask
      
    • للاطلاع على حالة المهمة التفصيلية، بما في ذلك معلومات تقدم الترحيل

      az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask --expand output
      
    • يمكنك أيضا استخدام تنسيق استعلام JMESPath لاستخراج migrationState فقط من إخراج التوسيع:

      az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask --expand output --query 'properties.output[].migrationState'
      

      في الإخراج، هناك العديد من المعلمات التي تشير إلى تقدم خطوات الترحيل المختلفة. على سبيل المثال، راجع المخرجات أدناه:

      {
          "output": [
              // Database Level
              {
                  "appliedChanges": 0, // Total incremental sync applied after full load
                  "cdcDeleteCounter": 0, // Total delete operation  applied after full load
                  "cdcInsertCounter": 0, // Total insert operation applied after full load
                  "cdcUpdateCounter": 0, // Total update operation applied after full load
                  "databaseName": "inventory",
                  "endedOn": null,
                  "fullLoadCompletedTables": 2, //Number of tables completed full load
                  "fullLoadErroredTables": 0, //Number of tables that contain migration error
                  "fullLoadLoadingTables": 0, //Number of tables that are in loading status
                  "fullLoadQueuedTables": 0, //Number of tables that are in queued status
                  "id": "db|inventory",
                  "incomingChanges": 0, //Number of changes after full load
                  "initializationCompleted": true,
                  "latency": 0,
                  //Status of migration task
                  "migrationState": "READY_TO_COMPLETE", //READY_TO_COMPLETE => the database is ready for cutover
                  "resultType": "DatabaseLevelOutput",
                  "startedOn": "2018-07-05T23:36:02.27839+00:00"
              }, {
                  "databaseCount": 1,
                  "endedOn": null,
                  "id": "dd27aa3a-ed71-4bff-ab34-77db4261101c",
                  "resultType": "MigrationLevelOutput",
                  "sourceServer": "138.91.123.10",
                  "sourceVersion": "PostgreSQL",
                  "startedOn": "2018-07-05T23:36:02.27839+00:00",
                  "state": "PENDING",
                  "targetServer": "builddemotarget.postgres.database.azure.com",
                  "targetVersion": "Azure Database for PostgreSQL"
              },
              // Table 1
              {
                  "cdcDeleteCounter": 0,
                  "cdcInsertCounter": 0,
                  "cdcUpdateCounter": 0,
                  "dataErrorsCount": 0,
                  "databaseName": "inventory",
                  "fullLoadEndedOn": "2018-07-05T23:36:20.740701+00:00", //Full load completed time
                  "fullLoadEstFinishTime": "1970-01-01T00:00:00+00:00",
                  "fullLoadStartedOn": "2018-07-05T23:36:15.864552+00:00", //Full load started time
                  "fullLoadTotalRows": 10, //Number of rows loaded in full load
                  "fullLoadTotalVolumeBytes": 7056, //Volume in Bytes in full load
                  "id": "or|inventory|public|actor",
                  "lastModifiedTime": "2018-07-05T23:36:16.880174+00:00",
                  "resultType": "TableLevelOutput",
                  "state": "COMPLETED", //State of migration for this table
                  "tableName": "public.catalog", //Table name
                  "totalChangesApplied": 0 //Total sync changes that applied after full load
              },
              //Table 2
              {
                  "cdcDeleteCounter": 0,
                  "cdcInsertCounter": 50,
                  "cdcUpdateCounter": 0,
                  "dataErrorsCount": 0,
                  "databaseName": "inventory",
                  "fullLoadEndedOn": "2018-07-05T23:36:23.963138+00:00",
                  "fullLoadEstFinishTime": "1970-01-01T00:00:00+00:00",
                  "fullLoadStartedOn": "2018-07-05T23:36:19.302013+00:00",
                  "fullLoadTotalRows": 112,
                  "fullLoadTotalVolumeBytes": 46592,
                  "id": "or|inventory|public|address",
                  "lastModifiedTime": "2018-07-05T23:36:20.308646+00:00",
                  "resultType": "TableLevelOutput",
                  "state": "COMPLETED",
                  "tableName": "public.orders",
                  "totalChangesApplied": 0
              }
          ],
          // DMS migration task state
          "state": "Running", //Running => service is still listening to any changes that might come in
          "taskType": null
      }
      

مهمة ترحيل الانتقال

قاعدة البيانات جاهزة للانتقال عند استكمال التحميل بالكامل. اعتمادًا على مدى انشغال الخادم المصدر بالمعاملات الجديدة، قد تكون مهمة DMS لا تزال تقوم بالتغيير بعد اكتمال التحميل الكامل.

لضمان التقاط كافة البيانات، تحقق من صحة عدد الصفوف بين قواعد البيانات المصدر والمستهدفة. على سبيل المثال، يمكنك التحقق من التفاصيل التالية من مخرجات الحالة:

Database Level
"migrationState": "READY_TO_COMPLETE" => Status of migration task. READY_TO_COMPLETE means database is ready for cutover
"incomingChanges": 0 => Check for a period of 5-10 minutes to ensure no new incoming changes need to be applied to the target server

Table Level (for each table)
"fullLoadTotalRows": 10    => The row count matches the initial row count of the table
"cdcDeleteCounter": 0      => Number of deletes after the full load
"cdcInsertCounter": 50     => Number of inserts after the full load
"cdcUpdateCounter": 0      => Number of updates after the full load
  1. تنفيذ مهمة ترحيل قاعدة بيانات الانتقال باستخدام الأمر التالي:

    az dms project task cutover -h
    

    على سبيل المثال، سوف يبدأ انتقال الأمر التالي من أجل قاعدة بيانات 'Inventory':

    az dms project task cutover --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask  --object-name Inventory
    
  2. لمراقبة التقدم المحرز في الانتقال، قم بتشغيل الأمر التالي:

    az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask
    
  3. عندما تظهر حالة ترحيل قاعدة البيانات «Completed»، قم بإعادة إنشاء التسلسلات (إن أمكن)، ثم قم بتوصيل التطبيقات الخاصة بك بالمثيل المستهدف الجديد من Azure Database لـ PostgreSQL.

تنظيف المهام والمشروع والخدمة

إذا كنت بحاجة إلى إلغاء أو حذف أي مهمة أو مشروع أو خدمة DMS، قم بالإلغاء بالترتيب التالي:

  • «Cancel any running task»
  • «Delete the task»
  • «Delete the project»
  • «Delete DMS service»
  1. لإلغاء مهمة قيد التشغيل، استخدم الأمر التالي:

    az dms project task cancel --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask
    
  2. لحذف مهمة قيد التشغيل، استخدم الأمر التالي:

    az dms project task delete --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask
    
  3. لحذف مشروع، استخدم الأمر التالي:

    az dms project delete -n PGMigration -g PostgresDemo --service-name PostgresCLI
    
  4. لحذف خدمة DMS، استخدم الأمر التالي:

    az dms delete -g ProgresDemo -n PostgresCLI
    

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