كيفية إصلاح جداول قاعدة بيانات MySQL المتضررة خطوة بخطوة

في العالم الحديث، لا تعتمد الشركات بالفعل على platform خاصة لمعالجة البيانات. هناك منابع قاعدات بيانات عديدة تكون كافية لمعالجة مستويات عمل معتدلة واحتياجات العملاء بالمتوافرة العالية والاستعادة من الكوارث. MySQL هو one من تلك الأساسيات القاعدات التي توفر مجموعة كبيرة من الميزات والأداء العالي.

مثلما تكون أي من RDBMS الأخرين، يمكن أيضًا أن تكون MySQL عرضة لتلوث البيانات والجداول. The أخر إنقطاع أثناء التشغيل والذي أثار مشاكل مع Microsoft و CrowdStrike أيضًا أثر على مخزونات مراقبة MySQL. بسبب فشل الأنظمة التشغيلية، تتلوث جداول البيانات أو البيانات بأكملها.

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

فهم تلوث قاعدة MySQL البيانات

يمكن أن تظهر تلوث البيانات في MySQL بطرق مختلفة، بما في ذلك:

جداول غير قابلة للوصول

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

أخطاء توأين البيانات غير المتوافقة.

إذا كانت الجدول متضررة، بدلاً من البيانات المعنية، قد تعود استعمال استعمال البحث على بعض القيم السيئة أو النتائج الغير متجاوزة أو النتائج الغير متماسكة.

إنهاء غير متوقع

في بعض الحالات قد تنهار MySQL أثناء مراجعة الجدول أو تشغيل النسخ الاحتياطية باستخدام mysqldump. وجدت هذه الخطأ مرة أثناء محاكاة سياق التدمير. تدمرت ملف البيانات للجدول. بعد بدء الخدمة، عندما حاولت استخدام جدول بواسطة أحد الأعمال SELECT، تنهارت خدمات MySQL تلقائيًا.

رسائل الخطاء خلال عمليات البيانات

أثناء مراجعة الجدول المتضررة، قد تواجه بعض الأخطاء مثل:

Plain Text

 

هذه الأخطاء تشير إلى أن ملف البيانات أو ملفات المؤشرات المرتبطة متضررة.

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

المقاييس لإصلاح جدولات MySQL

قبل محاولة أي إصلاح، تأكد من وجود التأكيد التالي:

  • تأكيد باقي نسخ بياناتك المتضمنة للبيانات المتعلقة بMySQL
  • مساحة القرود كافية
  • دخول إداري للخوادم MySQL

حاليًا، دعونا نمحاكم التدمير اللامعنى للجدول.

تدمير جدول MySQL.

قبل أن نتعرف على عملية إصلاح قاعدة البيانات، سنفهم أولا كيفية تلويث قاعدة البيانات. للعرض، قمت بإنشاء قاعدة بيانات تُدعى “CorruptDB” على خادم قاعدة البيانات MySQL. قمت أيضا بإنشاء جدول تُدعى corrupt_table في قاعدة البيانات CorruptDB.

هنا الكود لإنشاء القاعدة والجدول.

MySQL

 

قمت بإضافة مليون سجل إلى الجدول عن طريق تنفيذ السؤال التالي. 

MySQL

 

لاحظ أن محاكاة تلويث الجدول تم على حاسبي المحمول. لا تحاول هذا في الإنتاج أو التطوير أو أي بيئة أخرى. الجدول الذي أستخدمه في هذه العرض تم إنشاؤه بمحرك قاعدة البيانات MyISAM. يمكنك القراءة عن محركات تخزين 替代 لمعرفة المزيد عن محركات قاعدة البيانات لخادم MySQL.

قمت بإجراء الخطوات التالية لتلويث الجدول.

الخطوة 1: إيقاف خدمات خادم MySQL

عليك إيقاف خادم MySQL. لفعل ذلك، قم بتشغيل PowerShell كمسؤول وقم بتنفيذ الأمر التالي.

Plain Text

 

بدلاً من ذلك، يمكنك أيضا إيقافه من خلال خدمات.

الخطوة 2: تلويث ملف الفهرس للجدول

الآن، يتوجب علينا تلويث ملف الفهرس للجدول. عندما تنشئ جدولًا في محرك قاعدة البيانات MyISAM، يتم إنشاء ثلاثة ملفات عند إنشاء الجدول باستخدام محرك قاعدة البيانات MyISAM. 

  • ملفات MYD: يحتوي هذا الملف على البيانات الفعلية.
  • ملفات MYI: هذا ملف الفهرس.
  • ملفات Frm: يحتوي الملف على هيكل جدول.

سنcorrupt ملف الفهرس. ملفات البيانات توجد في الموقع الافتراضي الذي هو “C:\ProgramData\MySQL\MySQL Server 8.0\Data\corruptdb.” للتلف، نحن نستخدم محرر التواليت.  

قم بتحميل وتثبيت محرر التواليت. افتح ملفات MYI باستخدامه. يبدو الملف كالصورة التالية:

استبدل البايتات الخمسة الأولى بقيم عشوائية. حفظ الملف وإغلاق المحرر.

الآن، دعونا نبدأ الخدمة ونحاول الوصول إلى الجدول.

الخطوة 3: بدء خدمات MySQL والوصول إلى الجدول

أولا، بدء خدمات MySQL بإجراء الأمر التالي في PowerShell.

Plain Text

 

بمجرد بدء الخدمات، قم بتنفيذ الاستعلام التالي في سطر الأوامر MySQL.

MySQL

 

أعاد الاستعلام الخطأ التالي:

يشير الخطأ إلى أن فهرس corrupt_table قد تعطل ويجب إصلاحه.

وسائل الإصلاح اليدوية لجداول MySQL

هناك بعض الوسائل التي يمكنك استخدامها لإصلاح الجدول المتعطل في MySQL. الطريقة الأولى هي استخدام الأوامر CHECK TABLE و REPAIR TABLE

أوامر فحص الجدول وإصلاح الجدول

يمكنك إستعادة الجدول باستخدام الأوامر الداخلية CHECK TABLE و REPAIR TABLE لـMySQL. هذه الأوامر تستخدم للتشخيص وإصلاح أي جدول MyISAM.

الأمر فحص الجدول يتحقق من سلامة الجدول. يتحقق من بنية الجدول، الفهارس، والبيانات لأي تلف أو تتبع الأعطال ويظهر التفاصيل. السيntaxة هي التالية:

Plain Text

 

يمكنك تحديد الخيارات المختلفة.

  1. QUICK: هذا الخيار يقوم بفحص سريع وتحديد الأشياء مثل الفهارس المتضررة.
  2. FAST: يفحص الجداول التي لم تغلق بصورة صحيحة.
  3. CHANGED: هذا الخيار يفحص فقط الجداول التي تغيرت بعد آخر تنفيذ لـCHECK TABLE.
  4. MEDIUM: هذا الخيار يفحص السجلات ويؤكد بأن الروابط بين الجدول والبيانات صحيحة.
  5. EXTENDED: هذا الخيار يجري فحص دقيق لبنية الجدول ومحتوياته.

هنا في هذه العرضة، سنقوم بفحص سريع. هذه هي الأمر.

Plain Text

 

الصورة:

كما ترون في الصورة أعلاه، يشير الخطأ إلى أن فهرس corrupt_table متضرر ويحتاج إلى إصلاح. 

سنستخدم الأمر REPAIR TABLE لإصلاح التلف في الجدول. يستخدم الأمر REPAIR TABLE لإصلاح بنية الجدول والبيانات من التلف، خاصة الجداول التي تحتوي محرك قاعدة البيانات MyISAM. في حالة تلف الفهرس للجدول، يعيد الأمر REPAIR TABLE بناء الفهارس.

سيntaxية REPAIR TABLE هي كما يلي:

Plain Text

 

يمكنك تحديد الخيارات التالية:

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

في هذه الديمو سنقوم بتلوث ملف البحث الخاص بالجدول لذا سنستخدم الخيار سريع. قم بتنفيذ الأمر التالي

Plain Text

 

شاشة التقاط:

وكما ترون في الصورة السفلية ، تم تصحيح corrupt_table بنجاح. للتحقق ، قم بتنفيذ التسألة التالية على MySQL Workbench:

MySQL

 

خريطة المعلومات:

وكما ترون ، تم توفير الجدول الآن.

إعادة Restaura de la Tabla Utilizando el Comando mysqldump

الطريقة الثانية هي إعادة الجدول بالتخزين. ويمكن استخدام هذه الطريقة عندما تكون الجدول قد تلوث للغاية ولا يمكن التصحيح باستخدام أمر REPAIR TABLE .

لإعادة جدول MySQL من ال备份، يمكنك استخدام أمر mysqldump . يمكنك قراءة مقالة “mysqldump — Programa de Copia de Seguridad de Base de Datos” لتعلم المزيد عن كيفية استخدام أمر mysqldump. النمط لإعادة الجدول يوجد أسفل.

MySQL

 

في النمط:

  • اسم المستخدم: أدخل اسم المستخدم الذي تستخدمه للتواصل بقاعدة MySQL.
  • -p: especificar la contraseña. Si la deja en blanco, MySQL le pedirá una contraseña.
  • [database_name]: Especificar el nombre de la base de datos en la que intenta restaurar la tabla.
  • Table_dump.sql: أخبر المستند المتبقَّى بإسمه بالكامل.

للتوضيح، قمت بإنجاز نسخة باقية لقاعدة البيانات CorruptDB التي توجد في مجلد C:\MySQLData\Backup.

لإستعادة corrupt_table, يمكننا استخدام الأوامر التالية.

MySQL

 

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

MySQL

 

تسألة الخروج:

كما ترون في الشاشة الأعلى، تم إستعادة الجدول بنجاح.

باستخدام phpMyAdmin

يمكنك أيضًا استخدام أداة phpMyAdmin لإصلاح أي قاعدة بيانات MySQL متضررة. phpMyAdmin هي واجهة تصميمية لإدارة وحماية MySQL و MariaDB. للتوضيح، قمت بتثبيتها على حاسبي.

  • لإصلاح الجدول، قم بتشغيل phpMyAdmin وتنقل إلى قاعدة البيانات التي تحتوي الجدول المتضرر.
  • في اللوحة الأيمنة، يمكنك رؤية قائمة بجميع الجدول المنشورة في قاعدة CorruptDB.
  • حدد Corrupt_table من القائمة واختر خيار Repair table من القائمة المنسدة.

هذه شاشة للمرجع:

بمجرد إصلاح الجدول، يمكنك رؤية حالة corrupt_table أصبحت عالية. هذه هي الشاشة:

الخلاصة

في هذه المقالة تعلمنا عن الأسباب المحتملة للتلوث في قاعدة البيانات MySQL وكيفية إصلاحها. و شرحت عملية خطوية بخطوة لتلويث جداول MySQL بواسطة محرر 十六进制. كما أغطيت كيفية إصلاحها باستخدام الأوامر CHECK TABLE و REPAIR TABLE. أيضًا تعلمنا كيفية إعادة تحميل الجدول بواسطة وسيلة mysqldump

تصميم جدول MySQL تلويث قاعدة بيانات قد يكون صعبًا و لكن مع الأدوات الصحيحة والطرق يمكن التعامل بها. توفر الطرق اليدوية حل المشاكل بشكل بسيط بينما يقدم phpMyAdmin خيارًا إنصافيًا وموثوقًا للتعامل مع التلويث. تأكد دائمًا من نسخ الاحتياطات الدائمة وعملية رفع صحة قاعدة البيانات لتخفيض خطر التلويث.

Source:
https://dzone.com/articles/repair-corrupt-mysql-database-tables-step-by-step