Всем привет — на днях у меня произошла неприятная вещь. Во время процедуры увеличения размера одного тома на сервере, за счёт уменьшения другого, что то пошло не так и сервер упал. Не буду вдаваться в подробности что именно пошло не так, т.к. статья не про это, но поверьте — я попробовал всё возможное для реанимации сервера, но восстановить работоспособность сервера мне так и не удалось.
Есть хорошая новость — у меня по понедельникам автоматически создаются бекапы. И если на многих сайтах за неделю ничего не поменялось, то вот на одном проекте, над которым я работаю особенно упорно, за неделю было сделано очень много, так много что бекап недельной давности меня не устраивал. Я загрузился с Линуксовского LiveUSB на котором была R‑Studio и с помощью этой программы восстановил нужные мне файлы, а именно сами файлы сайта и файлы MySQL базы этого сайта. И если с файлами сайта всё понятно — после восстановления сервера из бекапа, я просто заменил файлы сайта новыми файлами, а вот с базой не всё так просто — если заменить ibd и frm файлы, то MySQL просто валится в ошибку и не стартует.
Приступаем к восстановлению.
Нам понадобится программа DBRECOVER for MySQL скачать ее можно здесь. Распаковываем программу в любую папку и запускаем start_dbrecover_windows.bat
Для того чтобы “вытащить” данные из этих page записей нам нужно знать структуру таблицы. Она как раз хранится в frm файлах
Проделываем данную операцию с каждым ibd файлом, в результате чего получим вот такие файлы в которых содержатся запросы, которые мы можем выполнить через PHP MyAdmin в заранее заготовленную пустую базу.
Вы спросите
- У меня к каждому ibd файлу, формируется по несколько page записей, что делать с ними ?
У меня тоже после выполения “Scan” к ibd файлам формировалось по нескольку page записей, я в каждую page запись вставлял запрос и сохранял полученный результат — но этот результат не пригодился, т.к. там формировался непонятный мусор. Так что совет — просто смотрите что сформировалось. Если это похоже на нормальную запись то это то что нужно и экспортируем её, а если там непонятно что — такую таблицу можно не экспортировать.
Вы спросите
- А как я отличу непонятно что от нормальной таблицы ?
На этом всё, удачного вам восстановления данных, а лучше в такие ситуации не попадать. И напоминаю вам одну из заповедей любого системного администратора или программиста
Резервное копирование это наше всё