Восстановление MySQL базы из .frm файлов

вторник, 18 февраля 2014 г.

Приключилась неприятная история - один из серверов под Debian 7 полностью умер. Подробности не буду писать, просто скажу, что по факту я смог получить только полный образ виртуальной машины, то есть все файлы, что были на сервере. Дальше мне предстояло не только настроить сервер заново, но и восстановить базу из файлов .frm, потому что использую только таблицы InnoDB.

Сразу к делу:
1. Делаем на всякий случай полный бэкап файлов из /var/lib/mysql куда-нибудь
2. С помощью PhpMyAdmin или Navicat создаем базу с тем же именем, что и на предыдущем сервере. Например, mydb.
3. Останавливаем mysql на сервере - /etc/init.d/mysql stop
4. В директорию /var/lib/mysql из бэкапа со старого сервера заливаем файл ibdata1. Даем права ему rw- rw- --- (это 660) для юзера mysql и группы mysql.
5. В директорию /var/lib/mysql/mydb заливаем .frm файлы с бэкапа от старого сервера. Каждому .frm файлу нужно дать те же права, что и в пункте 4.
6. Стартуем mysql - /etc/init.d/mysql start

Если все прошло хорошо, то mysql стартанет, а в базе появятся таблицы со старыми данными.
Если все плохо, то возвращаем назад из п.1 данные на место и пытаемся найти иной способ.

Сразу оговорюсь - мой метод не панацея для всех возможных случаев, но лично в моей ситуации все сработало как надо. Если кому-то поможет или есть что дополнить - прошу в комментарии.

4 коммент.:

Анонимный комментирует...

Спасибо. Мне помогло.

Unknown комментирует...

Спасибо за разъяснения что и куда кидать, именно это я и искал))

Анонимный комментирует...

Огромное спасибо!! Самый точный способ в таком случае

Анонимный комментирует...

Спасибо большое, я уже думал прощай база(

Copyright © 2010 WEB IT blog