Відновлення таблиць myisam після збою
Збої в роботі сервера MySQL як правило можуть залишати за собою хвіст проблем, які починають виявлятися поступово, виливаючись у кінцевому підсумку в проблеми з таблицями. Характерні ознаки при наявності помилок в таблицях бази даних можуть бути абсолютно різні, найбільш популярні з них це:
- Процес mysqld вантажить процесор по повній;
- Значне гальмування при зверненні до проблемної таблиці, як правило, проявляється на роботі сайту, в певних місцях (там, де відбувається звернення до таблиці);
- Сайт відлітає в довгі думи через тривале відповіді сервера MySQL;
- Гальмування при зверненні до будь-якої таблиці;
- Падіння процесу mysqld;
- І мабуть, найяскравіший ознака проблеми з таблицями бази даних, це виникнення такої помилки при старті: ERROR 144 (HY000) at line 1: Table './dataBase/table' is marked as crashed and last (automatic?) Repair failed;
Тепер приступимо до вирішення проблеми. Гарантії 100% відновлення таблиць бази даних після збою бути не може, і це потрібно розуміти і бути готовим до такого розкладу. Однак в є рішення, які в значній мірі можуть виправити ситуацію, а можливо і виправдати покладені на них надії, в загальному, справа випадку.
Для перевірки і відновлення таблиць MyISAM в MySQL є утиліта myisamchk, яку можна використовувати так само для отримання інформації про таблиці бази даних і оптимізації. Якщо говорити про оптимізацію, то для більшості випадків можна так само скористатися командою OPTIMIZE TABLES, є нюанси, цей варіант не такий швидкий, і не такий надійний (в разі фатальних помилок) як myisamchk. Виправлення помилок за допомогою myisamchk досить безпечно, але зробити резервну копію все-таки варто, тому що в таблицю можуть бути внесені значні зміни.
Зупиніть сервер MySQL перед перевіркою таблиць:
Для старту перевірки і відновлення таблиць MySQL виконуємо таку команду:
де dataBase - ім'я бази даних, table - файл даних таблиці
Зверніть увагу, що таблиці типу MyISAM містяться в файлах, які мають розширення * .MYI і * .MYD. Після введення команди, у вікні консолі будуть показані результати роботи і виправлення пошкоджених індексів перевіряється таблиці. приклад:
Після закінчення перевірки, і виправлення помилок, можна пробувати стартувати сервер MySQL.