هذه مجموعة أوامر ل MySQL استعملتها في الفترة الماضيّة وكانت (ولا زالت) مهمّة ومفيدة. أضعها هنا كمرجع لمن قد يحتاجها.
النّسخ الاحتياطي والاسترجاع
عمل نسخة احتياطيّة من كافة قواعد البيانات:
sudo mysqldump --all-databases -p | bzip2 -c > backup.sql.bz2
هذا سينشأ ملف مضغوط يحتوي على كافة قواعد البيانات في خادم MySQL.
استرجاع البيانات:
أولاً نحتاج إلى فك ضغط الملف
bzip2 -d backup.sql.bz2
ثمّ نقوم بعمليّة الإرجاع
mysql -p < backup.sql
اصلاح الجداول
الاعطاب التي تصيب البيانات نفسها في قاعدة البيانات قليلة جدّاً. أمّا الاعطاب التي تصيب الفهرس فهي الدّارجة. هناك عدّة أوامر تساعد في عمليّة اصلاح الجداول ولكنّها تعمل فقط مع الجداول من نوع MyISAM أمّا الأنواع الأخرى فالحلّ الوحيد (الذي أعرفه) هو استرجاع الجداول من نسخ احتياطيّة. (إذا كان أحدكم يعلم بطرق اصلاح غير الاسترجاع فحبّذا لو يشاركنا بها).
فحص الجدول باستخدام mysqlcheck
mysqlcheck -uba7eth db_name table
db_name.table OK
اصلاح الجدول باستخدام REPAIR
REPAIR يعطي ثلاث خيارات
QUICK وهو من الاسم سريع. وسبب سرعته هو أن ملف البيانات لا يتمّ تغييره/تعديله.
EXTENDED يقوم بمحاولة اصلاح/استرجاع كل سطر وهو ما ينتج عنّه سطور غير صحيحة (مهملات) لذلك يستخدم فقط كل أخير في حال فشل الحلول الأخرى.
USE_FRM يستخدم في حالة كون الملف ذو الامتداد MYI غير موجود او معطوب حيث يقوم باستخدام الملف FRM من اجل إعادة بناء الفهرس.
في أغلب الحالات يمكن الاكتفاء فقط ب REPAIR بدون أي خيار
mysql> REPAIR TABLE table;
+-------------------------+--------+----------+---------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+-------------------------+--------+----------+---------------------------------------------+
| db_name.table | repair | error | Can't find file: 'table.MYI' (errno: 2) |
+-------------------------+--------+----------+---------------------------------------------+
في المثال أعلاه عملية الاصلاح فشلت كون الملف .MYI غير موجود. ولهذا نستخدم الخيار USE_FRM
mysql> REPAIR TABLE table USE_FRM;
+-------------------------+--------+----------+------------------------------------+
| Table | Op | Msg_type | Msg_text |
+-------------------------+--------+----------+------------------------------------+
| db_name.table | repair | warning | Number of rows changed from 0 to 10 |
| db_name.table | repair | status | OK |
+-------------------------+--------+----------+------------------------------------+
الاصلاح باستخدام mysqlcheck
mysqlcheck -r db_name.table -uba7eth
السلام عليكم
بارك الله فيك أخي على الموضوع
وعليكم السلام ورحمة الله وبركاته … وفيكم بارك الله أخي الكريم.
رائع جداً
بارك الله فيكم ..
وفيكم بارك الله اختي الكريمة.
كانك تعرف ما أحتاج هذه الأيام ؟!!
شاكرين مهللين يا رجل و سامحنا على التقصير
إضافة:
http://www.albazy.com/databases/1357
تحياتي و احترامي
شكرا جزيلا لك استفدت حقا من هذه التدوينة الرائعة مثل صاحبها
اخوك اسامة