تعمیر جداول InnoDB در MySQL
اگر جداول دیتابیس شما با ساختار InnoDB خراب شدهاند، نمیتوانید مستقیماً از دستور REPAIR TABLE استفاده کنید چون این دستور فقط برای MyISAM کار میکند. در این مقاله روشهای تعمیر جداول InnoDB را بررسی میکنیم.
چرا REPAIR TABLE برای InnoDB کار نمیکند؟
موتور InnoDB ساختار متفاوتی از MyISAM دارد. InnoDB از فایلهای مشترک ibdata1 و لاگهای redo استفاده میکند و دستور REPAIR TABLE برای این ساختار طراحی نشده است.
روشهای تعمیر InnoDB
روش ۱: ALTER TABLE (بازسازی جدول)
ALTER TABLE table_name ENGINE=InnoDB;
این دستور جدول را مجدداً بازسازی میکند و اکثر خرابیها را رفع مینماید.
روش ۲: OPTIMIZE TABLE
OPTIMIZE TABLE table_name;
برای InnoDB، این دستور معادل ALTER TABLE بازسازی است.
روش ۳: innodb_force_recovery
اگر MySQL اصلاً استارت نمیشود:
# در /etc/my.cnf
[mysqld]
innodb_force_recovery = 1
مقدار را از ۱ تا ۶ افزایش دهید. پس از استارت، فوراً بکاپ بگیرید:
mysqldump --all-databases > backup.sql
روش ۴: mysqlcheck
mysqlcheck -u root -p --auto-repair --all-databases
روش ۵: بازسازی از بکاپ
مطمئنترین روش، بازگردانی از آخرین بکاپ سالم است.
پیشگیری
بکاپ منظم دیتابیس ضروری است. مانیتورینگ فضای دیسک و استفاده از UPS از خرابی جلوگیری میکند.
اگر سرور مجازی دارید، کانفیگ سرور شامل بهینهسازی MySQL است. هاست وردپرس میهن هاستینگ با بکاپ خودکار دیتابیس ارائه میشود.