سؤال

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

نحن مهتمون بتثبيت MySQL على كلا العقدتين، حيث توجد بياناتها في وحدة التخزين المشتركة والعقدة النشطة فقط هي التي تقوم بتشغيل الخادم.

MySQL مع InnoDB قادر على العمل على جهاز خام, ، ويوجد أيضًا دليل حول كيفية التشغيل MySQL عبر مجموعة مشابهة لطوبولوجيتنا.ومع ذلك، في المثال الثاني، لديهم نظام ملفات مثبت على وحدة التخزين المشتركة.تثير مشكلة نظام الملفات قلقًا كبيرًا:

لا يزال ib_logfile* يتطلب نظام ملفات.لذا فإن ميزة MySQL الأولية ليست خامًا تمامًا.يرجى تصحيح لي إذا كنت مخطئا.هل هناك حل بديل لتخزين هذه الملفات في وحدة التخزين الأولية؟يمكننا حفظ سجلات الإعادة (ib_logfile0, ib_logfile1) في جهاز تمهيد العقدة واحذف هذه الملفات دائمًا قبل بدء تشغيل الخادم (لذلك لن يكون لدينا ملفات سجل قديمة في حالة عمليات تجاوز الفشل المتعددة).ومع ذلك، قد يؤدي ذلك إلى الالتزام الجزئي بالمعاملة غير الملتزم بها في حالة الفشل في منتصف المعاملة، مما يتعارض مع فكرة المعاملات بأكملها.

هل هناك أي ملفات/ميزات أخرى قد تؤثر على سلوك الخلية في هذه الهيكل؟

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

المحلول

تجدر الإشارة إلى أن سجل الكتابة المسبق (WAL) الخاص بـ InnoDB، وib_logfile*، ليس هو الشيء الوحيد الذي سيحتاج إلى نظام ملفات.لديك:

  1. جداول النظام في مخطط mysql والتي من المحتمل أن تستخدم محرك تخزين MyISAM (.frm، .MYD، .MYI لكل جدول) (معظمها يستخدم الآن InnoDB في الإصدار 5.7)
  2. ملفات .frm لكل جدول InnoDB، حتى عند استخدام مساحة جدول النظام المشتركة (بيانات تعريف الجدول المطلوبة)
  3. ملفات سجل MySQL (سجل الأخطاء، السجل العام، السجل الثنائي)
  4. التحف SSL
  5. auto.cnf (حيث يتم إنشاء UUID لمثيل MySQL وتخزينه تلقائيًا)
  6. ملف db.opt لكل مخطط (in /<datadir>/<schema>/)
  7. ملف .par إذا قمت بإنشاء جدول مقسم (ذهب في 5.7)
  8. ملفات .trn و.trg إذا قمت بإنشاء مشغلات
  9. مساحة الجدول InnoDB tmp (5.6+)
  10. خريطة صفحة تجمع المخزن المؤقت المستمر (ib_buffer_pool، 5.6+)

كل ما سبق عادة ما يكون ضمن دليل البيانات, ، طالما كان لديك datadir=/some/valid/fs/path - وهذا منسوخ أيضًا (على سبيل المثالDRBD) أو مشترك (على سبيل المثال.NFS، GFS، OCFS) بين العقدتين - ستكون بخير.

تجدر الإشارة إلى أن الملفات ‎.frm و.par و.trn و.trg و.opt ستختفي مع قاموس البيانات الجديد.

ترقبوا بعض الإعلانات الكبيرة هناك في الأشهر المقبلة!:)

ليس من الواضح بالنسبة لي سبب استخدامك لجهاز RAW؟أنا متأكد من أن لديك أسبابك بالرغم من ذلك.:)

حظ سعيد!

نصائح أخرى

تقنية التخزين الأولية جيدة فقط لـ ibdata1 innodb_file_per_table عاجز.

لقد ذكرت إعداد هذا عدة مرات

لاحظ بنية InnoDB (صورة من Percona CTO Vadim Tkachenko)

InnoDB Plumbing

مع innodb_file_per_table عند تعطيلها، سيتم وضع البيانات والفهارس لجميع جداول InnoDB داخل وحدة التخزين الأولية جنبًا إلى جنب مع المخزن المؤقت للكتابة المزدوج، والمخزن المؤقت للإدراج، وقاموس البيانات، ومقاطع التراجع، ومساحة التراجع.

فيما يتعلق بسجلات الإعادة، يجب أن تفكر في امتلاك جهاز كتلة DRBD صغير للاحتفاظ به /var/lib/mysql, ، مع ib_logfile0 و ib_logfile1 في هذا المجلد.وبالتالي فإن الفشل سيكون على النحو التالي

  • كسر DRBD بين الخادمين
  • قم بتعيين حالة DRBD للخادم الجديد على Primary/Unknown
  • جبل DRBD على /var/lib/mysql
  • قم بتركيب الجهاز الخام باستخدام معلومات ibdata1
  • service mysql start
  • مزامنة أجهزة DRBD
  • يثبت جهاز تنظيم ضربات القلب/ucarp الخدمات للتحضير لتجاوز الفشل المقبل

فضلت DRBD/ucarp لإعدادات تجاوز الفشل. انظر مشاركاتي القديمة عليها

تحديث 14/10/2015 الساعة 11:30 بتوقيت شرق الولايات المتحدة

كما ذكرت سابقًا، يجب أن تكون سجلات الإعادة موجودة في جهاز كتلة DRBD المثبت عليه /var/lib/mysql.وفيما يتعلق بالملفات الأساسية الأخرى مثل

  • سجلات ثنائية
  • سجلات التتابع
  • سجل الأخطاء
  • سجل بطيء
  • السجل العام

يجب أن تكون كل هذه الملفات موجودة /var/lib/mysql أيضًا.بهذه الطريقة، ستحمل عمليات تجاوز الفشل كل ما يتعلق بـ MySQL (باستثناء البيانات الأولية الموجودة في القرص الخاص بها).

تحذير :هذا الإعداد ليس لجداول MyISAM.في حالة حدوث تجاوز فشل فادح، سيتم وضع علامة على جميع جداول MyISAM المفتوحة قبل التعطل/تجاوز الفشل على أنها تالفة وستتطلب تشغيلها REPAIR TABLE على كافة الجداول التي تؤثر على MyISAM.

إذا كانت جميع جداولك هي InnoDB، فتجاهل هذا التحذير.إذا قمت بتحويل جداول MyISAM المتبقية إلى InnoDB، فيمكنك تجاهل هذا التحذير.(لا تقم بتحويل أي جداول MyISAM في ملف mysql المخطط في InnoDB).

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