Myisamchk - ремонт таблиць і відновлення даних бд mysql, direqtor
Бази даних MySQL буває падають. З ким не буває? Двигуни сайтів при цьому лаються страшними словами в червоних рамках про зниклі таблиці. Але не все так страшно. Бази даних на те і створені, щоб все нажите непосильною працею не зливалося в Велике Ніщо від банальної помилки запису файлу або відключення живлення. Найкращим способом для їх ремонту та відновлення даних є, ІМХО, утиліта командного рядка - myisamchk. Вона входить в будь-яку штатну установку MySQL і працює з таблицями типу MyISAM. Робота з файлами бази відбувається безпосередньо, тому ремонт можливий тільки при зупиненому сервері БД MySQL.
Пам'ятка по швидкому ремонту таблиць MyISAM для себе і для тих кого занесе на цю сторінку з пошуку.
Заходимо на сервер через термінал. Переходимо в папку, де MySQL зберігає свій файли. Подивитися це можна в файлі конфігурації MySQL my.cnf. Досить часто це / var / lib / mysql.
Зупиняємо сервер БД, інакше навіть при перевірці ми отримаємо повідомлення про всі поточні блокування таблиць
service mysql stop
Перевірка таблиць даних
Перевірка всіх баз даних
myisamchk -css * / *. MYI
Перевірка однієї бази даних
myisamchk -css імя_бази / *. MYI
Опцію -c можна опускати, вона стоїть за умовчанням. Подвійна опція s змушує myisamchk бути дуже тихою, грубо кажучи, весь свій багатослівний висновок про справні таблицях вона зливає в / dev / null і виводить на екран тільки виявлені помилки і попередження.
Відновлення даних
Отже, биті таблиці знайдені, приступаємо до ремонту. Спершу робимо резервну копію тих баз даних, де виявлені проблеми.
tar -czvf імя_бази.tgz імя_бази
Потім додатково перевіряємо окремі таблиці, імена яких отримали на попередньому етапі
myisamchk -з імя_бази / імя_табліци.MYI
Можливо, ви отримаєте якусь корисну інформацію, але зазвичай myisamchk просто рекомендує лагодити. Лагодити, так чинити.
myisamchk -r імя_бази / імя_табліци.MYI
Досить часто утиліта не може цього зробити, тоді пробуємо інший режим:
myisamchk -o імя_бази / імя_табліци.MYI
Якщо все OK, то запускаємо сервер і ваші сайти запрацюють знову
service mysql start
Не забуваємо видалити файл бекапа, якщо він не потрібен
А є і дуже лінива версія всього вищеописаного процесу, обробить всі MyISAM таблиці у всіх БД, доступних вказаною користувачеві і працює без зупинки сервера MySQL:
mysqlcheck -u root -p --auto-repair --check --optimize --all-databases
Або в конкретної БД:
mysqlcheck -u root -p --auto-repair --check --optimize імя_бази_данних
Без оптимізації, тільки перевірку і ремонт можна зробити і для таблиць типу InnoDB:
mysqlcheck -u root -p --auto-repair --check --all-databases