كيفية إصلاح الجداول التالفة في MySQL

0 الأسهم
0
0
0
0

مقدمة

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

الأسباب الشائعة لفساد الجدول
  • تتوقف خدمة MySQL في منتصف كتابة البيانات
  • تعديل الجدول بواسطة تطبيق خارجي أثناء تعديله بواسطة الخادم
  • توقف غير متوقع للسيارة
  • فشل أجهزة الكمبيوتر
  • خطأ برمجي في كود MySQL

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

خطوات إصلاح جدول تالف في MySQL

أولاً، قم بإيقاف خدمة MySQL:

sudo systemctl stop mysql

ملاحظة: في بعض الأنظمة، مثل Rocky Linux، قد يتم استدعاء خدمة MySQL ماي إس كيو إل دي أن تكون معروفة.

ثم انسخ جميع بياناتك إلى مجلد نسخ احتياطي جديد. في أنظمة أوبونتو، يكون مجلد البيانات الافتراضي هو /var/lib/mysql/ يكون:

cp -r /var/lib/mysql /var/lib/mysql_bkp

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

sudo systemctl start mysql
CHECK TABLE table_name;

إذا كان الجدول تالفًا، ستظهر لك رسالة تؤكد ذلك. إذا كان جدول MyISAM تالفًا، فيمكنك عادةً إصلاحه باستخدام الأمر طاولة الإصلاح تم إصلاحه:

REPAIR TABLE table_name;

إذا نجح الإصلاح، فسترى رسالة مشابهة لهذه في الإخراج:

Output
+--------------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------------------+--------+----------+----------+
| database_name.table_name | repair | status | OK |
+--------------------------+--------+----------+----------+

إذا كان الجدول لا يزال تالفًا، توفر وثائق MySQL طرقًا بديلة لإصلاح الجداول التالفة.

إصلاح الجداول التالفة باستخدام محرك تخزين InnoDB

إذا كان الجدول تالفًا من محرك التخزين إنوديب تختلف عملية الإصلاح باختلاف إصدار MySQL الذي تستخدمه. يُستخدم InnoDB كمحرك تخزين افتراضي لـ MySQL منذ الإصدار 8.0، ويتميز بميزات فحص وإصلاح تلقائية للتلف. يكتشف InnoDB الصفحات التالفة باستخدام قيم المجموع الاختباري لكل صفحة يقرأها، ويوقف خادم MySQL تلقائيًا إذا وجد اختلافًا في قيم المجموع الاختباري.

نادرًا ما تحتاج إلى إصلاح جداول InnoDB، إذ يوفر InnoDB آليةً لاستعادة البيانات بعد الأعطال، تُمكّنك من حل معظم المشاكل بإعادة تشغيل الخادم. مع ذلك، إذا واجهتَ موقفًا يتطلب إعادة بناء جدول InnoDB، فستجد في وثائق MySQL إرشاداتٍ حول كيفية القيام بذلك. تفريغ وإعادة تحميل يوصي. تتضمن هذه الطريقة استعادة الوصول إلى الجدول التالف باستخدام الأداة mysqldump يتم استخدامه لإنشاء نسخة احتياطية منطقية للجدول تحافظ على بنية الجدول والبيانات الموجودة فيه، ثم إعادة إدراج الجدول في قاعدة البيانات.

أعد تشغيل خدمة MySQL

أولاً، حاول إعادة تشغيل خدمة MySQL لمعرفة ما إذا كان هذا يتيح لك الوصول إلى الخادم:

sudo systemctl restart mysql

إذا كان الخادم لا يزال معطلاً أو غير متاح، فيمكنك استخدام الخيار قوة الاسترداد فعّل InnoDB في الإعدادات. للقيام بذلك، أنشئ ملفًا mysqld.cnf تعديل. في أنظمة Ubuntu وDebian، يوجد هذا الملف عادةً في /إلخ/mysql/ في أنظمة Red Hat وRocky، يوجد هذا الملف عادةً في /etc/my.cnf.d إنه يقع.

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

في القسم [ماي إس كيو إل دي] أضف السطر التالي:

. . .
[mysqld]
. . .
innodb_force_recovery=1

بعد حفظ التغييرات وإغلاق الملف، حاول تشغيل خدمة MySQL مرة أخرى. إذا تمكنت من الوصول إلى الجدول التالف، فاستخدم الأداة mysqldump استخدم هذا لإنشاء نسخة احتياطية من بيانات الجدول. يمكنك تسمية هذا الملف بأي اسم تريده، ولكن هنا سيكون اسمه out.sql نحن نسميها:

mysqldump database_name table_name > out.sql

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

mysql -u user -p --execute="DROP TABLE database_name.table_name"

وأخيرًا، قم بإنشاء الجدول باستخدام الملف أحمق استرداد ما قمت بإنشائه مؤخرًا:

mysql -u user -p < out.sql

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

نتيجة

باتباع هذا الدليل، تعلمتَ كيفية إصلاح الجداول التالفة في MySQL، واستخدمتَ طرقًا مختلفة لحل المشكلات في محركات تخزين MyISAM وInnoDB. احرص دائمًا على نسخ بياناتك احتياطيًا قبل إجراء أي تغييرات لتجنب خطر فقدانها.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

قد يعجبك أيضاً