PmaControl logo PmaControl
  • مرحباً
  • PmaControl
    • وكلاء الذكاء الاصطناعي 13 وكلاء محليين
    • عروضنا المجتمع، السحابة، محليًا، المميز
    • التوثيق أدلة، API، الهندسة المعمارية
    • السوق المكونات الإضافية للمجتمع
    • عملاء أكثر من 28 شركة
    • الأسئلة الشائعة 25 سؤالا / 7 فئات
    قواعد البيانات
    • ماريا دي بي 31 مادة
    • ماي إس كيو إل 11 مادة
    • مجموعة جاليرا 6 عناصر
    • ماكس سكيل 3 عناصر
    • ProxySQL 2 عناصر
    • أمازون أورورا ماي إس كيو إل 0 العناصر
    • قاعدة بيانات أزور 0 العناصر
    • انقر البيت 0 العناصر
    • GCP CloudSQL 0 العناصر
    • بيركوناسيرفر 0 العناصر
    • متجر واحد 0 العناصر
    • تي دي بي 0 العناصر
    • سرعة 0 العناصر
    الحلول
    • دعم 24 × 7 حالات الطوارئ MariaDB وMySQL
    • Observabilité SQL المراقبة والتنبيهات والطوبولوجيا
    • Haute disponibilité النسخ المتماثل، تجاوز الفشل، جاليرا
    • Disaster Recovery النسخ الاحتياطي والاستعادة، RPO/RTO
    • Sécurité & conformité التدقيق، اللائحة العامة لحماية البيانات، SOC2
    • Migration & upgrade صفر توقف عن العمل، pt-osc، gh-ost
  • عروضنا
  • موارد
    • التوثيق الأدلة الفنية وواجهات برمجة التطبيقات
    • مركز تحسين MySQL مؤشر تخفيض السعر والمقاييس والإعدادات والحوادث
    • الأسئلة الشائعة 25 سؤالا متكررا
    • الشهادات ملاحظات العملاء وحالات الاستخدام
    • مدونة مقالات ورؤى
    • خريطة الطريق الميزات القادمة
    مجالات الخبرة
    • Observabilité SQL المراقبة والتنبيهات وطوبولوجيا Dot3
    • Haute disponibilité النسخ المتماثل، تجاوز الفشل، جاليرا
    • Sécurité & conformité التدقيق، اللائحة العامة لحماية البيانات، SOC2، ISO 27001
    • Disaster Recovery النسخ الاحتياطي والاستعادة، RPO/RTO
    • Performance & optimisation ملخصات، شرح، ضبط
    • Migration & upgrade صفر توقف عن العمل، pt-osc
    روابط سريعة
    • جيثب ويكي 26 صفحة - التثبيت والمحرك والمكونات الإضافية
    • كود المصدر مستودع جيثب الرسمي
    • دعم 24 × 7 حالات الطوارئ MariaDB وMySQL
    • احجز عرضًا توضيحيًا 30 دقيقة - هندسة معمارية حقيقية
  • دعم 24 × 7
  • احجز عرضًا توضيحيًا
احجز عرضًا توضيحيًا
🇫🇷 FR Français 🇬🇧 EN English 🇵🇱 PL Polski 🇷🇺 RU Русский 🇨🇳 ZH 中文 🇸🇦 AR العربية
← العودة إلى بلوق

MyRocks تحت التحميل: عندما يتسبب ALTER TABLE في حدوث تلف

تم النشر بتاريخ 6 مارس 2026 بواسطة Aurélien LEQUOY
mariadb rocksdb corruption ddl incident-response mdev-39044
يشارك X LinkedIn Facebook Email PDF
MyRocks تحت التحميل: عندما يتسبب ALTER TABLE في حدوث تلف

السياق

في 6 مارس 2026، تعرض خادم الإنتاج MariaDB 10.11.15 الذي يشرف عليه PmaControl إلى حادث كبير. على عكس الأعطال المعتادة (OOM، segfault)، قدم هذا الحادث أعراضًا جديدة:

RocksDB: Error opening instance, Status Code: 2,
  Status: Corruption: truncated record body
Incorrect information in file: './pmacontrol/ts_value_general_int.frm'
Can't init tc log
Aborting

تمت إعادة تشغيل الخادم في حلقة عدة مرات قبل الاستقرار، مع وجود أخطاء .frm mismatch في العديد من جداول السلاسل الزمنية.

تذكرة MDEV-39044

بعد التحقيق، قمنا بربط هذه الحادثة بالتذكرة MariaDB MDEV-39044:

  • تلف MyRocks بعد إعادة التشغيل أثناء/بعد تغيير عبء العمل: الفساد: نص السجل المقطوع، عدم تطابق .frm، لا يوجد سجل أعطال، لا يوجد قاتل OOM*

ما تصفه التذكرة

توثق التذكرة سيناريو الفساد القابل للتكرار:

  1. جداول RocksDB الكبيرة المقسمة — بالضبط ما يستخدمه PmaControl للمقاييس (جداول ts_value_* المقسمة على أساس يومي)
  2. ALTER TABLE تحت تحميل الكتابة — إضافة أقسام أثناء قيام التطبيق بالكتابة بشكل مستمر
  3. ضغط الذاكرة InnoDB المتزامن — يتواجد جدولا InnoDB وRocksDB معًا على نفس الخادم
  4. لا يوجد أثر للنواة — لا يوجد قاتل OOM، ولا يوجد خطأ segfault، ولا يوجد سجل أعطال

لماذا هو غدرا

أخطر نقطة في التذكرة: غياب سجل الأعطال هو السلوك المتوقع في هذا السيناريو. تتم إعادة تشغيل الخادم، ويقوم بإجراء InnoDB crash recovery، ولكن بيانات تعريف RocksDB تالفة (.frm mismatch).

DBA الذي ينظر فقط إلى journalctl أو dmesg لن يجد شيئًا. سوف يصنف الحادث على أنه "إعادة تشغيل غير مبررة" ويمضي قدمًا.

حالتنا الملموسة

الجداول المتأثرة

جميع جداول RocksDB مقسمة حسب اليوم، ويتم طلبها كتابيًا على نطاق واسع:

  • ts_value_general_int — مقاييس الأعداد الصحيحة (متغيرات الحالة، والعدادات)
  • ts_value_general_json — مقاييس JSON المعقدة
  • ts_mysql_digest_stat — إحصائيات الاستعلام (الملخصات)
  • ts_value_general_text — المقاييس النصية
  • ts_value_slave_int — مقاييس النسخ المتماثل
  • ts_value_slave_text — حالات النسخ المتماثل التفصيلية

المحفز المحتمل

PmaControl يحافظ على أقسام هذه الجداول تلقائيًا: إضافة قسم اليوم التالي، وحذف الأقسام منتهية الصلاحية. يتم تنفيذ هذه ALTER TABLE ... ADD PARTITION / DROP PARTITION على جداول تبلغ مساحتها عدة عشرات من الجيجابايت، بينما يكتب عمال الفراغ بشكل مستمر (كل 10 ثوانٍ لكل خادم خاضع للإشراف).

إشارات ضغط الذاكرة

قبل التعطل، يُظهر السجل MariaDB:

InnoDB: Memory pressure event disregarded

تشير التذكرة MDEV-39044 بوضوح إلى هذا السبب كعامل مشدد. لا يتسبب ضغط الذاكرة InnoDB في حدوث تلف مباشر، ولكنه ينشئ السياق الذي يصبح فيه RocksDB DDL غير ذري.

كيف اكتشف PmaControl الحادثة

  1. تم اكتشاف إعادة ضبط وقت التشغيل خلال 10 ثوانٍ عبر السلسلة الزمنية ts_variable.uptime
  2. تنبيه برقية يتم إرساله فورًا
  3. الارتباط التلقائي مع سجل الأخطاء: اكتشاف توقيعات crash recovery + truncated record body
  4. تحليل بأثر رجعي: كانت المقاييس من الساعة السابقة (سلاسل العمليات، والذاكرة، ووحدة المعالجة المركزية) طبيعية - مما يؤكد أن هذه ليست مشكلة تحميل نموذجية

التوصيات

إجراءات فورية

  1. لا تقم بتشغيل DDL على جداول RocksDB تحت تحميل الكتابة . جدول ALTER TABLE ... ADD/DROP PARTITION خلال فترات النشاط المنخفض.

  2. مراقبة .frm الأخطاء في سجل الأخطاء. هذا هو المؤشر الأول لفساد ما بعد DDL.

  3. اتبع التذكرة MDEV-39044 للإصلاح الرسمي.

الإجراءات الهيكلية

  1. محركات منفصلة: إذا أمكن، لا تخلط InnoDB و RocksDB على نفس الخادم للجداول المهمة.

  2. فكر في ترحيل الجداول الفعالة إلى InnoDB. يعد RocksDB رائعًا للكتابة المتسلسلة، لكن ملفات DDL الخاصة به ليست ذرية تحت الحمل.

  3. حجم الذاكرة لتجنب الضغط InnoDB الذي يؤدي إلى تفاقم المشكلة. راجع مقالتنا عن قاتل OOM لحساب أسوأ الحالات.

ما ليس كذلك

  • هذه ليست مشكلة في الأجهزة (القرص، ذاكرة الوصول العشوائي)
  • هذه ليست مشكلة في تكوين MySQL (الإعدادات صحيحة)
  • هذا غير قابل للتكرار عند الطلب (هذه حالة سباق في محرك RocksDB/DDL)

هذا خطأ في المحرك تم توثيقه بواسطة MariaDB أنفسهم.

الخلاصة

يعد MDEV-39044 بمثابة تذكير بأن استخدام محركات التخزين البديلة (RocksDB وTokuDB) في أحمال عمل الإنتاج يتطلب يقظة خاصة بشأن DDL. عدم وجود سجلات الأعطال لا يعني عدم وجود الفساد.

يكتشف PmaControl هذه الحوادث من خلال مراقبة uptime + ارتباط سجل الأخطاء، حيث لا ترى الأدوات التقليدية شيئًا.

يشارك X LinkedIn Facebook Email PDF
← العودة إلى بلوق

تعليقات (0)

لا توجد تعليقات حتى الآن.

اترك تعليقا

PmaControl
+33 6 63 28 27 47 contact@pmacontrol.com
إشعارات قانونية GitHub اتصال
لا تنتظر وقوع الحادث حتى تفهم هندستك المعمارية. © 2014-2026 PmaControl — 68Koncept