Відновлення бази даних mysql з ib_logfile
Відновлення бази даних MySQL з ib_logfile доводиться робити, коли сталося страшне - на сервері здохли обидва файлових масиву. Випадок рідкісний, але буває, що 8 хардов разом накрилися. Точніше накрилися вони якось вибірково. У підсумку, замість дампа бази даних залишився тільки каталог / var / lib / mysql. в якому зберігаються каталоги зі схемою баз і log файли ib_logfile. З цього місива потрібно відновити одну, але дуже важливу базу. Як не дивно, на більшості вітчизняних адмінських ресурсах народ стверджує, що відновити базу в такій ситуації практично неможливо. Деяка кількість експериментів і куріння офіційної доки показало зворотне - відновити можна і без будь-яких втрат.
Підготовка до відновлення
Оскільки операционке на сервері каюк, з горем навпіл видирає з пошкоджених дискових масивів каталог з базою. Якщо говорити про Linux Debian бази даних MySQL лежать в каталозі: / var / lib / mysql.
На мертвому сервері стояла версія MySQL 5.0.24. Я скачав 5.0.96 - не думаю, що між ними принципова різниця є.
Відповідно, встановлюємо на свій комп. Відновлення я робив під управлінням Windows.
Якщо встановили і налаштували як сервіс, то цей сервіс слід зупинити. Те ж стосується і демона під Лінукс.
Відновлення даних
Копіюємо вміст каталогу mysql в каталог даних нашого нового сервера. У моєму випадку дані розташовуються в
Якщо ви відновлення будете робити під Лінукс, то каталог даних буде знаходитися
Принаймні це стосується дистрибутивів Debian і Ubuntu.
Тепер запускаємо наш сервер в режимі відновлення. У Windows файл mysqld-nt.exe. в Linux - mysqld:
Важливо правильно вказати значення параметра -innodb_log_file_size. Його значення має дорівнювати розміру ваших фалів ib_logfile.
Після певних роздумів сервер повинен стати доступним для підключення.
Потрібну базу дампи і заливаємо на нормальний новий сервер:
Відновлення бази даних MySQL з ib_logfile успішно завершено!
Для тих, хто в танку: файл дампа відновлюється нормально на будь-якій операційній системі. Ніяк його перекодувати не потрібно!