إسقاط الأقسام التاريخية التي لم تعد مطلوبة أثناء النسخ المتماثل P2P

dba.stackexchange https://dba.stackexchange.com/questions/118474

سؤال

تمتلك الشركة التي أعمل بها مجموعة من قواعد البيانات (أكبرها أقل بقليل من 1 تيرابايت) على خوادم مختلفة - 2 في الولايات المتحدة، و2 في أوروبا.

نقوم بتشغيل النسخ المتماثل الكامل من نظير إلى نظير لكل قاعدة بيانات بين العقد الأربع - حتى يتمكنوا جميعًا من إجراء المعاملات (إدراج/تحديث/حذف) وجميعهم لديهم البيانات التي جمعتها العقد الأخرى (ضمن زمن انتقال متغير - أسوأ اتصال قيد التشغيل) متوسط ​​حوالي 30-40 ثانية).

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

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

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

كبيئة إنتاج كاملة، أحاول تجنب أي شيء من شأنه أن يؤثر على النسخ المتماثل - بما في ذلك إعادة المزامنة (الكثير من البيانات المراد إعادة مزامنتها، عبر مسافات كبيرة).

هل لدى أي شخص أي اقتراحات جيدة لكيفية أداء هذه المهمة؟

هل كانت مفيدة؟

المحلول

لذا، لا توجد إجابات هنا، ولكن بعد قدر معين من المناقشة والتفكير، توصلت إلى خطة منذ بضعة أشهر.

سأجعل هذه الإجابة مختصرة لهذا المنتدى (قد لا توافق على ذلك!)، لمحاولة مساعدة أي شخص يحتاج إلى أداء مهمة مماثلة في المستقبل، فلا تتردد في طرح الأسئلة إذا فاتني أي شيء - من خلال الطريقة هو مستقيم إلى الأمام.

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

أفضل طريقة للقيام بذلك (تذكر أنه لا يمكنك إسقاط الأقسام ويتم نسخ أي/معظم العمليات وبالتالي إنشاء قدر كبير من حركة المرور وكمية كبيرة من تغييرات الصفوف)، هي إنشاء SP جديد وإعداد منشور حول هذا SP.ولذلك ينبغي أن تكون متاحة في جميع العقد.الشيء المهم هو ضبط النسخ المتماثل لتكرار تنفيذ SP - وليس النتيجة (أي.نسخ استدعاء EXEC Sp_delete وليس معرّف الحذف = 1، وحذف معرّف WHERE = 2 - تغييرات مستوى الصف).تم تعيين هذا في النقر بزر الماوس الأيمن فوق المنشور الجديد (قبل إعداد العقد الأخرى في الطوبولوجيا) > الخصائص > المقالات > انقر فوق SP_Delete الذي قمت بإعداده > زر خصائص المقالة > تعيين خصائص مقالة الإجراءات المخزنة المميزة > سطر النسخ المتماثل = تنفيذ الإجراء المخزن.أكمل طوبولوجيا P2P الخاصة بك.

لكن MHSQLDBA، ربما تقول، سيؤدي ذلك فقط إلى حذف الصفوف بشكل منفصل في كل عقدة عبر SP.- ولهذا السبب قمت بتعيين SP للقيام بعمليات الحذف فقط:

إذا @@SERVERNAME='الخادم الحالي الذي تريد التأثير عليه'

اتبع ذلك مع إجراء الحذف الخاص بك.

وبالتالي، عندما يتم التقاط استدعاء EXEC هذا على الخادم (الخوادم) الذي لا تريد إجراء عمليات الحذف فيه، فسيتم تجاهله لأن @@Servername لن يساوي الخادم الذي حددته.

قد تفكر - لماذا لا تقوم فقط بإنشاء SP على الخادم الذي تهتم به فقط وتشغيله؟- وذلك لأنه إذا قمت بذلك، فسوف يقوم النسخ المتماثل بتقسيم التغييرات إلى كيفية تأثيرها على صفوف المقالة (الجدول) وتكرار التغييرات الفعلية - يجب عليك نسخ SP بحيث يمكنك تحديد نسخ EXEC الخاص بـ SP بدلا من التغييرات الناتجة.

هذا هو الترتيب المقترح للأحداث في رأيي/تجربتي:

  1. قم بإنشاء SP باستخدام رمز الحذف الذي يحدد أنه سيتم تشغيل رمز الحذف فقط إذا كان @@SERVERNAME = الخادم المطلوب
  2. قم بإعداد منشور جديد ينسخ هذا SP 1 مع النسخ المتماثل = تنفيذ الإجراء المخزن ضمن خصائص المقالة
  3. قم بتشغيل SP على الخادم الذي تريده وكن سعيدًا لأنك لم تقم بإسقاط العقار بالكامل باستخدام الآلاف من أوامر الحذف المكررة

نقاط ملحوظة:

  1. وهذه لا تزال مهمة شاقة.باستخدام هذه الطريقة، تكون قد قللت من تأثيرك على جميع الخوادم باستثناء الخادم الذي تعمل عليه.لم تقلل من عبء العمل بالنسبة لك، بل في الواقع لقد جعلت الأمر أسوأ - سيتعين عليك تشغيل نفس SP في كل عقدة (مع تغيير سطر IF إلى الخادم الذي تستهدفه)، مما يؤدي إلى زيادة العمل لديك بشكل فعال للقيام به، من خلال عدد الخوادم التي لديك للتأثير.إنه أكثر أمانًا إلى حد كبير لأنه سيكون لديك تأثير ضئيل على جميع العقد الأخرى (أفترض أنك فشلت في حركة المرور بعيدًا عن العقدة التي تعمل عليها بالطبع!)
  2. باستخدام هذه الطريقة، قمت بإنشاء عدم تناسق بين العقد الخاصة بك - فأنت بحاجة حقًا إلى التأكد من أن البيانات التي تقوم بإزالتها لن تتغير قبل أن تتمكن من الانتهاء من تنفيذ نفس العملية على جميع العقد التي تتطلب العمل.إذا تم تغيير الصف الذي قمت بحذفه عند عقدة واحدة داخل بقية العقار، فسوف ينتهي بك الأمر إلى حدوث أخطاء في الاتساق.
  3. من المحتمل أنك ستضع اتفاقيات مستوى الخدمة المتوقعة للنسخ المتماثل العادي في الخلف بمقدار الوقت المستغرق لإجراء عمليات الحذف في العقدة التي تعمل عليها (أوصي بشدة بقراءة كيفية تجميع عمليات الحذف) - لذلك عليك أن تكون على دراية أنه بمجرد اكتمال العملية، لن تتمكن العقدة من العودة إلى العمل حتى تتم استعادة النسخ المتماثل العادي بعد تحرير أقفال عملية الحذف.إذا كنت تقوم بالنسخ المتماثل عبر خطوط زمن استجابة عالية، فأنا أقترح عليك بجدية التحقق من استخدام عوامل PULL بدلاً من PUSH - فهذا يحدث فرقًا كبيرًا.

من المحتمل أن تكون هناك طريقة أفضل لنقل البيانات بعيدًا في SP بدلاً من استخدام الحذف - ربما نقلها إلى جدول آخر غير متضمن في النسخ المتماثل ثم إسقاط الجدول "الجديد" - أو العكس، إذا كانت البيانات التي تريد الاحتفاظ بها أقل من المقدار المطلوب حذفه، انقل البيانات التي تريد الاحتفاظ بها إلى جدول جديد، وأسقط الجدول القديم ثم أعد تسمية جدولك الجديد - هناك الكثير من النصائح من هذه المنظورات - أعمل في بيئة كان الأمر فيها أسهل للنضال من أجل الحذف بدلاً من الترويج لمفهوم لن يفهمه بعض الموظفين، لذلك أصف الطريقة المؤلمة ولكن الأساسية.

تنصل:كل ما سبق خطير.إذا تم القيام بذلك على عجل دون تفكير مناسب، فمن الممكن أن تفسد بشكل خطير هيكل النسخ المتماثل، وبيانات شركتك، وربما وظيفتك.يرجى اتباع الطريقة المذكورة أعلاه وتطوير خطة المعركة الخاصة بك - قم بإنشاء بيئة اختبار لإثبات المفهوم، واختبار الاختبار وإعادة الاختبار، ولا تأخذ هذه المهمة باستخفاف.مع الاهتمام الكافي، ستحقق مهمتك - لكن الأمر لا يستحق القيام به بعد ظهر يوم الجمعة بعد تناول كأسين من البيرة وقت الغداء.افعل ذلك بشكل صحيح، افعله مرة واحدة (للاختبار الحقيقي بقدر ما تستطيع)، افعله بشكل صحيح.

آمل أن يساعد هذا شخص آخر.- أقوم بإضافة هذا الجزء لأنه ما كنت سأبحث عنه إذا أردت هذه الإجابة:

حذف كمية كبيرة من البيانات من طوبولوجيا النسخ المتماثل نظير إلى نظير

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى dba.stackexchange
scroll top