أفضل الممارسات لمزامنة بيانات Azure SQL

ينطبق على: قاعدة بيانات Azure SQL

توضح هذه المقالة أفضل الممارسات لمزامنة بيانات Azure SQL.

لقراءة نبذة حول SQL Data Sync، راجع مزامنة البيانات عبر عدة قواعد بيانات سحابية ومحلية مع Azure SQL Data Sync.

هام

Azure SQL Data Sync لا يدعم مثيل Azure SQL المُدار في الوقت الحالي.

الأمان والموثوقية

وكيل العميل

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

حسابات قاعدة البيانات مع أقل الامتيازات المطلوبة

  • لإعداد المزامنة. إنشاء / تعديل الجدول؛ تعديل قاعدة البيانات؛ إنشاء إجراء؛ حدد / تعديل المخطط؛ إنشاء نوع محدد من قبل المستخدم.

  • للمزامنة المستمرة. تحديد / إدراج / تحديث / حذف في الجداول التي تم تحديدها للمزامنة وعلى بيانات التعريف المتزامنة وجداول التتبع؛ تنفيذ إذن على الإجراءات المخزنة التي أنشأتها الخدمة؛ تنفيذ إذن على أنواع الجداول المعرفة من قبل المستخدم.

  • لإلغاء التزويد. تعديل على الجداول جزء من المزامنة؛ تحديد / حذف في مزامنة جداول بيانات التعريف؛ التحكم في جداول تتبع المزامنة والإجراءات المخزنة والأنواع المعرفة من قبل المستخدم.

تدعم قاعدة بيانات Azure SQL مجموعة واحدة فقط من بيانات الاعتماد. لإنجاز هذه المهام ضمن هذا القيد، ضع في اعتبارك الخيارات التالية:

  • قم بتغيير بيانات الاعتماد لمراحل مختلفة (على سبيل المثال: بيانات الاعتماد 1 للإعداد وبيانات الاعتماد 2 للحالة المستمرة).
  • قم بتغيير إذن بيانات الاعتماد (أي قم بتغيير الإذن بعد إعداد المزامنة).

التدقيق

يوصى بتمكين التدقيق على مستوى قواعد البيانات في مجموعات المزامنة. تعرف على كيفية تمكين التدوين على Azure SQL Database أو تمكين التدوين على قاعدة بيانات Microsoft SQL Server.

الإعداد

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

حجم قاعدة البيانات

عند إنشاء قاعدة بيانات جديدة، عيّن الحجم الأقصى بحيث يكون دائماً أكبر من قاعدة البيانات التي تنشرها. إذا لم تقم بتعيين الحد الأقصى للحجم على أكبر من قاعدة البيانات المنشورة فستفشل المزامنة. على الرغم من أن SQL Data Sync لا تقدم نمواً تلقائياً؛ إلا إنه يمكنك تشغيل الأمر ALTER DATABASEلزيادة حجم قاعدة البيانات بعد إنشائها. تأكد من البقاء ضمن حدود حجم قاعدة البيانات.

هام

يقوم SQL Data Sync بتخزين بيانات تعريف إضافية مع كل قاعدة بيانات. تأكد من حساب هذه بيانات التعريف عند حساب المساحة المطلوبة. يرتبط مقدار النفقات الإضافية بعرض الجداول (على سبيل المثال: تتطلب الجداول الضيقة مزيداً من النفقات العامة) ومقدار نسبة استخدام الشبكة.

اعتبارات الجدول وقيوده

اختيار الجداول

لا يتعين عليك تضمين كافة الجداول الموجودة في قاعدة بيانات في مجموعة مزامنة. تؤثر الجداول التي تقوم بتضمينها في مجموعة مزامنة على الكفاءة والتكاليف. قم بتضمين الجداول والجداول التي تعتمد عليها في مجموعة مزامنة فقط إذا كانت احتياجات العمل تتطلب ذلك.

المفاتيح الرئيسية

يجب أن يحتوي كل جدول في مجموعة مزامنة على مفتاح أساسي. لا يمكن لـ SQL Data Sync مزامنة جدول لا يحتوي على مفتاح أساسي.

قبل استخدام SQL Data Sync في الإنتاج، اختبر أداء المزامنة الأولية والمستمرة.

توفر الجداول الفارغة أفضل أداء

توفر الجداول الفارغة أفضل أداء في وقت التكوين. إذا كان الجدول المستهدف فارغاً فإن Data Sync يستخدم الإدراج المجمع لتحميل البيانات. خلاف ذلك؛ تقوم Data Sync بإجراء مقارنة صف بصف وإدراج للتحقق من وجود تعارضات. ومع ذلك؛ إذا لم يكن الأداء مصدر قلق فيمكنك إعداد المزامنة بين الجداول التي تحتوي بالفعل على بيانات.

توفير قواعد بيانات الوجهة

يوفر SQL Data Sync التوفير التلقائي الأساسي لقاعدة البيانات.

يناقش هذا القسم قيود التوفير في SQL Data Sync.

قيود التزويد التلقائي

يحتوي SQL Data Sync على القيود التالية للتوفير التلقائي:

  • حدد فقط الأعمدة التي تم إنشاؤها في الجدول الوجهة. لا يتم توفير أي أعمدة ليست جزءاً من مجموعة المزامنة في الجداول الوجهة.
  • يتم إنشاء الفهارس للأعمدة المحددة فقط. إذا كان فهرس جدول المصدر يحتوي على أعمدة ليست جزءاً من مجموعة المزامنة فلن يتم توفير هذه الفهارس في الجداول الوجهة.
  • لا يتم توفير الفهارس في أعمدة نوع XML.
  • لا يتم توفير قيود التحقق.
  • لا يتم توفير المشغلات الموجودة في الجداول المصدر.
  • لا يتم إنشاء طرق العرض والإجراءات المخزنة في قاعدة البيانات الوجهة.
  • عند UPDATE CASCADE وON DELETE CASCADE لا تتم إعادة إنشاء الإجراءات على قيود المفتاح الخارجي في جداول الوجهة.
  • إذا كانت لديك أعمدة عشرية أو رقمية بدقة أكبر من 28؛ فقد تواجه SQL Data Sync مشكلة تجاوز تحويل أثناء المزامنة. نوصي بتحديد دقة الأعمدة العشرية أو الرقمية إلى 28 أو أقل.

التوصيات

  • استخدم إمكانية التوفير التلقائي لمزامنة بيانات SQL فقط عندما تحاول تجربة الخدمة.
  • للإنتاج؛ قم بتوفير مخطط قاعدة البيانات.

مكان تحديد موقع قاعدة البيانات المحورية

سيناريو من مؤسسة إلى سحابة

لتقليل زمن الوصول؛ احتفظ بقاعدة البيانات المركزية بالقرب من أكبر تركيز لحركة قاعدة بيانات مجموعة المزامنة.

سيناريو من سحابة إلى سحابة

  • عندما تكون جميع قواعد البيانات في مجموعة متزامنة في مركز بيانات واحد، يجب أن يكون الموزع موجوداً في نفس مركز البيانات. يقلل هذا التكوين من زمن الانتقال وتكلفة نقل البيانات بين مراكز البيانات.
  • عندما تكون قواعد البيانات في مجموعة متزامنة في عدة مراكز بيانات؛ يجب أن يكون الموزع موجوداً في نفس مركز البيانات مثل غالبية قواعد البيانات وحركة مرور قاعدة البيانات.

سيناريوهات مختلطة

قم بتطبيق الإرشادات السابقة على تكوينات مجموعة المزامنة المعقدة، مثل تلك التي تعد مزيجاً من سيناريوهات مؤسسة إلى مجموعة سحابية وسيناريوهات من مجموعة النظراء إلى مجموعة النظراء.

مزامنة

تجنب المزامنة الأولية البطيئة والمكلفة

في هذا القسم نناقش المزامنة الأولية لمجموعة مزامنة. تعرف على كيفية المساعدة في منع المزامنة الأولية من أن تستغرق وقتاً أطول وتكون أكثر تكلفة من اللازم.

كيف تعمل المزامنة الأولية

عند إنشاء مجموعة مزامنة، ابدأ بالبيانات الموجودة في قاعدة بيانات واحدة فقط. إذا كانت لديك بيانات في قواعد بيانات متعددة؛ فإن SQL Data Sync يعامل كل صف على أنه تعارض يحتاج إلى حل. يؤدي حل التعارض هذا إلى إجراء المزامنة الأولية ببطء. إذا كانت لديك بيانات في قواعد بيانات متعددة؛ فقد تستغرق المزامنة الأولية ما بين عدة أيام وعدة أشهر، حسب حجم قاعدة البيانات.

إذا كانت قواعد البيانات موجودة في مراكز بيانات مختلفة؛ فيجب أن ينتقل كل صف بين مراكز البيانات المختلفة. هذا يزيد من تكلفة المزامنة الأولية.

التوصية

إن أمكن؛ فابدأ بالبيانات في قاعدة بيانات واحدة فقط من قواعد بيانات المجموعة المتزامنة.

تصميم لتجنب حلقات المزامنة

تحدث حلقة المزامنة عندما تكون هناك مراجع دائرية داخل مجموعة مزامنة. في هذا السيناريو يتم نسخ كل تغيير في قاعدة بيانات واحدة إلى ما لا نهاية وبشكل دائري من خلال قواعد البيانات في مجموعة المزامنة.

تأكد من تجنب حلقات المزامنة؛ لأنها تسبب تدهور الأداء وقد تؤدي إلى زيادة التكاليف بشكل كبير.

التغييرات التي لا يتم نشرها

أسباب فشل التغييرات في الانتشار

قد يفشل نشر التغييرات لأحد الأسباب التالية:

  • عدم توافق المخطط / نوع البيانات.
  • إدراج قيمة فارغة في أعمدة غير قابلة للإلغاء.
  • انتهاك قيود المفتاح الخارجي.

ماذا يحدث عندما تفشل التغييرات في الانتشار؟

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

ملاحظة

هذه التغييرات لا تنتشر أبداً. الطريقة الوحيدة للاسترداد في هذا السيناريو هي إعادة إنشاء مجموعة المزامنة.

التوصية

راقب مجموعة المزامنة وصحة قاعدة البيانات بانتظام من خلال واجهة البوابة الإلكترونية والسجل.

الصيانة

تجنب قواعد البيانات القديمة ومجموعات المزامنة

يمكن أن تصبح مجموعة المزامنة أو قاعدة البيانات في مجموعة مزامنة قديمة. عندما تكون حالة مجموعة المزامنة قديمة فإنها تتوقف عن العمل. عندما تكون حالة قاعدة البيانات قديمة فقد يتم فقد البيانات. من الأفضل تجنب هذا السيناريو بدلاً من محاولة التعافي منه.

تجنب قواعد البيانات القديمة

يتم تعيين حالة قاعدة البيانات على قديمة عندما تكون غير متصلة بالإنترنت لمدة 45 يوماً أو أكثر. لتجنب الحالة منتهية الصلاحية في قاعدة بيانات تأكد من عدم وجود أي من قواعد البيانات بلا اتصال لمدة 45 يوماً أو أكثر.

تجنب مجموعات المزامنة القديمة

يتم تعيين حالة مجموعة المزامنة على قديم عندما يفشل أي تغيير في مجموعة المزامنة في الانتشار إلى بقية مجموعة المزامنة لمدة 45 يوماً أو أكثر. لتجنب ظهور حالة قديمة في مجموعة متزامنة، تحقق بانتظام من سجل محفوظات مجموعة المزامنة. تأكد من حل جميع التعارضات، ونشر التغييرات بنجاح عبر قواعد بيانات المجموعة المتزامنة.

قد تفشل مجموعة مزامنة في تطبيق تغيير لأحد الأسباب التالية:

  • عدم توافق المخطط بين الجداول.
  • عدم توافق البيانات بين الجداول.
  • إدراج صف بقيمة فارغة في عمود لا يسمح بقيم خالية.
  • تحديث صف بقيمة تنتهك قيد المفتاح الخارجي.

لمنع مجموعات المزامنة القديمة:

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

تجنب مشكلات إلغاء حق الوصول

في بعض الحالات، قد يؤدي إلغاء تسجيل قاعدة البيانات مع وكيل العميل إلى فشل المزامنة.

السيناريو

  1. تم إنشاء مجموعة المزامنة A باستخدام مثيل قاعدة بيانات SQL وقاعدة بيانات SQL Server المرتبطة بالوكيل المحلي 1.
  2. يتم تسجيل نفس قاعدة البيانات المحلية مع الوكيل المحلي 2 (هذا الوكيل غير مرتبط بأي مجموعة مزامنة).
  3. يؤدي إلغاء تسجيل قاعدة البيانات المحلية من الوكيل المحلي 2 إلى إزالة التعقب وجداول التعريف لمجموعة المزامنة أ لقاعدة البيانات المحلية.
  4. فشلت عمليات مجموعة المزامنة أ مع ظهور هذا الخطأ: "تعذر إكمال العملية الحالية نظراً لعدم توفير قاعدة البيانات للمزامنة أو لعدم وجود أذونات لجداول تكوين المزامنة".

حل

لتجنب هذا السيناريو: لا تسجل قاعدة بيانات مع أكثر من وكيل واحد.

للتعافي من هذا السيناريو:

  1. قم بإزالة قاعدة البيانات من كل مجموعة مزامنة تنتمي إليها.
  2. أضف قاعدة البيانات مرة أخرى إلى كل مجموعة مزامنة قمت بإزالتها منها.
  3. انشر كل مجموعة مزامنة متأثرة (يوفر هذا الإجراء قاعدة البيانات).

تعديل مجموعة متزامنة

لا تحاول إزالة قاعدة بيانات من مجموعة مزامنة ثم تحرير مجموعة المزامنة بدون نشر أحد التغييرات أولاً.

بدلاً من ذلك؛ قم أولاً بإزالة قاعدة بيانات من مجموعة مزامنة. بعد ذلك انشر التغيير وانتظر حتى انتهاء إلغاء حق الوصول. عند الانتهاء من إلغاء حق الوصول؛ يمكنك تعديل مجموعة المزامنة ونشر التغييرات.

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

تجنب مهلة تحديث المخطط

إذا كان لديك مخطط معقد تريد مزامنته فقد تواجه "مهلة العملية" أثناء تحديث المخطط إذا كانت قاعدة بيانات المزامنة الوصفية تحتوي على SKU أقل (على سبيل المثال: أساسي).

حل

للتخفيف من هذه المشكلة يرجى توسيع قاعدة بيانات التعريف المتزامنة للحصول على SKU أعلى؛ مثل S3.

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

لمزيد من المعلومات حول SQL Data Sync، راجع:

لمزيد من المعلومات حول قاعدة بيانات SQL، راجع: