تمرين - التوفر العالي في Business Critical

مكتمل

في هذا التمرين، ستقوم بترقية قاعدة البيانات خاصتك إلى مستوى Business Critical. سترى كيف يوفر ذلك النسخ المتماثلة للقراءة ورفع الأداء.

ستستخدم أداة الـ ostress التي استخدمتها في التمرين السابق لإنشاء حمل عمل. ثم ستبدأ بعد ذلك في تجاوز الفشل باستخدام الوحدة النمطية Azure PowerShell في Azure Cloud Shell. وأخيرًا، سوف تقوم برؤية تأثير تجاوز الفشل على حمل العمل ostress.

التوفر الأساسي العالي في مستوى الخدمة Business Critical في Azure SQL

في هذا التمرين، ستكمل الخطوات التالية:

  1. نشر قاعدة البيانات من التمرين السابق في مستوى Business Critical
  2. تشغيل حمل العمل ostress.
  3. استخدام PowerShell لبدء تجاوز فشل.
  4. عرض النتائج في ostress.
  5. الاتصال بثانوي قابل للقراءة.

نشر نفس قاعدة البيانات في المستوى Business Critical

في وحدة نمطية سابقة، تعلمت كيفية قياس قاعدة بيانات باستخدام T-SQL. الهدف من هذا التمرين هو ترقية قاعدة البيانات التي استخدمتها في التمرين السابق من General Purpose إلى Business Critical ستستخدم Azure Cloud Shell لترقية قاعدة البيانات. لأن هناك حدًا بالنسبة إلى وتيرة تجاوز الفشل، عليك استخدام نفس عينة قاعدة البيانات ولكن عليك تسميته AdventureWorks-bc.

  1. في Azure Cloud Shell terminal على الجانب الأيمن من هذه الصفحة، قم بتشغيل البرنامج النصي PowerShell التالي لتكوين البيئة الخاصة بك:

    $resourceGroup = "<rgn>Sandbox resource group name</rgn>"
    $database = "AdventureWorks-bc"
    $server = Get-AzureRmSqlServer -ResourceGroupName $resourceGroup
    $server = $server.ServerName
    
    # Specify your default resource group and Azure SQL Database logical server
    az configure --defaults group=$resourceGroup sql-server=$server
    
    # Confirm the defaults are set
    az configure --list-defaults
    
  2. قم بتشغيل هذا الأمر لإنشاء قاعدة بيانات في مستوى الخدمة Business Critical:

    az sql db create --name $database `
    --edition BusinessCritical `
    --family Gen5 `
    --capacity 2 `
    --sample-name AdventureWorksLT `
    --read-scale Enabled `
    --zone-redundant false
    

    يستغرق هذا الأمر بعض الوقت للانتهاء. في أثناء تشغيله، يمكنك مراجعة بعض المعلمات المستخدمة:

    • family: تحدد هذه المعلمة جيل الجهاز لتكون متسقة مع التمرين السابق، استخدمنا Gen5.

    • capacity: تحدد هذه المعلمة عدد DTUs أو vCores. لتكون متسقة مع التمرين السابق، استخدمنا 2 vCores.

    • sample-name: لتكون متسقة مع التمرين السابق، استخدمنا AdventureWorksLT عينة قاعدة البيانات

    • edition: إن اسم هذه المعلمة مضلل بعض الشيء فإنه يشير حقا إلى مستوى الخدمة، وهو ليس هو نفس الإصدار الذي يتم استخدامه في SQL Server.

    • read-scale: إن هذا الخيار غير ممكن بشكل افتراضي، ولكن ليست هناك أي تكلفة إضافية له من خلال تمكينه، يتم تمكين إحدى النسخ المتماثلة الثانوية لاستخدامها كثانوية قابلة للقراءة.

    • zone-redundant: بشكلٍ افتراضي، يتم ضبط هذه المعلمة على false. يمكنك تعيينها إلى true إذا كنت تريد نشر "Multi-Az" بدون تكلفة إضافية. ستتعرف على المزيد حول مناطق التوافر في الوحدة التالية.

      إشعار

      تتوفر مناطق التوفر فقط في مناطق معينة. لا تتوفر هذه المناطق حاليًا في Azure SQL Managed Instance.

  3. بعد إنشاء قاعدة البيانات، يجب أن تشاهد معلومات مفصلة حول التحديثات في مخرجات Azure Cloud Shell. سترى فئتين رئيسيتين (على الرغم من أنك سترى أيضًا مؤشرات تحت عدد من الخصائص الأخرى):

    • currentServiceObjectiveName: يجب أن تكون BC_Gen5_2. BC تعني Business Critical.
    • currentSku:
      • name: يجب أن تكون BC_Gen5.
      • tier: يجب أن تكون BusinessCritical.
  4. طريقة أخرى للتحقق من مستوى الخدمة هي الانتقال إلى قاعدة البيانات الخاصة بك في مدخل Microsoft Azure. في علامة التبويب Overview راجع Pricing tier.

    تلميح

    هناك العديد من الطرق الأخرى لعرض هذه التحديثات. طريقة أخرى هي باستخدام SSMS. إذا قمت بالنقر بزر الماوس الأيمن فوق قاعدة البيانات الخاصة بك واخترت Properties>Configure SLO، يمكنك عرض التغييرات.

تشغيل حمل العمل ostress

كما هو الحال في التمرين السابق، سوف تستخدم ostress للاستعلام مرارًا وتكرارًا عن قاعدة بيانات Azure SQL.

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

    cd C:\Users\username\mslearn-azure-sql-fundamentals\05-Availability
    

    يتصل حمل العمل ostress ويقوم بتشغيل استعلام بسيط 50,000 مرة.

  2. استخدم البرنامج النصي ostress التالي لتشغيل حمل العمل. قم باستبدال serverName باسم خادم SQL Azure Database المنطقي الخاص بك. استبدال password بكلمة مرورك. يختلف هذا الأمر قليلاً عن الأمر الذي تم في التمرين السابق. أصبح اسم قاعدة البيانات الآنAdventureWorks-bc.

    .\ostress.exe -S"serverName.database.windows.net" -Q"SELECT COUNT(*) FROM SalesLT.Customer" -U"cloudadmin" -d"AdventureWorks-bc" -P"password" -n1 -r50000
    

    إذا كان حمل العمل يعمل بشكل صحيح، يجب أن ترى نتيجة الاستعلام 847 ، تظهر بشكل متكرر في نافذة موجه الأوامر Command Prompt

    إذا كنت ترغب في إيقاف تشغيل حمل العمل ostress قبل أن يتم ذلك، يمكنك اختيار Ctrl + C في terminal.

    إذا كنت تريد تشغيل حمل العمل مرة أخرى، يمكنك تشغيل الأمر مرة أخرى.

قم ببدء تجاوز الفشل وعرض النتائج

  1. قم بتكوين النوافذ بحيث يمكنك رؤية هذا المستعرض ونافذة موجه الأوامر Command Prompt في نفس الوقت.

  2. تشغيل التعليمات البرمجية التالية في Azure Cloud Shell terminal. هذا الأمر هو نفس الذي استخدمته في التمرين السابق.

    # create a failover
    Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup `
        -ServerName $server `
        -DatabaseName $database
    
  3. في أثناء تشغيل هذا الأمر، يجب الانتباه إلى أي تغييرات تظهر في terminal. ستلاحظ أنه لا يمكنك الوصول إلى قاعدة البيانات في أثناء حدوث تجاوز الفشل. هذا الوقت قصير جدًا بعد أن تصبح غير متصل، يجب أن تتم إعادة الاتصال بعد حوالي 5 ثوانٍ! تجاوز الفشل هذا أسرع بست مرات من ذلك الموجود في مستوى General Purpose.

    تذكر أن قواعد البيانات أو المثيلات المدارة في طبقة الخدمة Business Critical تحتوي بشكل أساسي على مجموعة قابلية وصول عالية التوفر AlwaysOn منشورة خلف الكواليس، لذلك عند تجاوز الفشل، كل ما يحدث هو تغيير في المؤشرات في النهاية الخلفية حيث يعيد Azure توجيهك إلى أحد الثانويات. لذلك يكون تجاوز الفشل أسرع بكثير مما سيكون عليه في General Purpose.

الاتصال بالنسخة المتماثلة للقراءة فقط

لأنك قمت بتمكين read-scaleالمعلمة، يمكنك استخدام إحدى النسخ المتماثلة الثانوية لأحمال العمل الخاصة بالقراءة فقط. للوصول إلى النسخة المتماثلة للقراءة فقط في التطبيقات، عليك فقط إضافة هذه المعلمة إلى سلسلة الاتصال لقاعدة بيانات:

ApplicationIntent=ReadOnly;
  1. في SSMS، قم بإنشاء اتصال استعلام جديد. (حدد File>New>Database Engine Query.)

    Screenshot that shows how to create a query connection.

  2. في مربع الحوار Connect to Server استخدم التكوين الذي كنت تستخدمه للاتصال بالخادم المنطقي لـ Azure SQL Database. (أي، استخدم مصادقة SQL Server.) حدد خيارات.

    Screenshot that shows the Connect to Server dialog box.

  3. اختر Connection Properties، ثم اختر Reset All. ضمن Connect to database، اختر Browse server ثم اختر قاعدة بيانات AdventureWorks-bc. حدد موافق.

  4. اختر Additional Connection Parameters ثم قم بلصق ما يلي في مربع النص. حدد اتصال.

    ApplicationIntent=ReadOnly;
    

    مع SSMS، يجب عليك تحديد الخادم وقاعدة البيانات التي تريد الاتصال بها للقراءة فقط. ذلك لأنه قد تكون هناك قواعد بيانات متعددة في الخادم الذي فيه قدرات مختلفة لثانويات قابلة للقراءة.

  5. كاختبار، جرّب الاستعلام التالي على استعلام محرك قاعدة البيانات الجديد. راقب النتائج. هل هي ما توقعته؟

    SELECT DATABASEPROPERTYEX(DB_NAME(), 'Updateability')
    

    Screenshot that shows the read-only response.

  6. يمكنك إعادة الاتصال اختياريًا وتحديث معلمات الاتصال الإضافية. (استبدل ReadOnly ب ReadWrite.) تأكد من أنك تصل إلى النسخة المتماثلة الأساسية للقراءة/الكتابة. ReadWrite هو الافتراضي، لذلك إن لم تقم باختيار أي شيء، فهذا ما ستحصل عليه:

    Screenshot that shows the read/write response.