Восстановление базы данных MySQL из .ibd и .frm файлов при помощи сотового телефона

Однажды передо мной возникла такая задача. Есть чужой веб-сервер с рухнувшей MySQL, и ftp-доступ к нему. Нужно перенести файлы на новый сервер и восстановить сайт. Дампа БД нет. Всё, что осталось от БД — файлы .ibd и .frm. А значит, это скорее всего MySQL InnoDB, и просто скопировать файлы, как в случае с MyISAM — не получится. Но восстановить всё же возможно.

Очень помогла вот эта статья: для восстановления таблицы нужно на новом сервере создать по .frm файлу таблицу с прежней структурой, а потом заменить .ibd файл, приведя в соответствие id таблицы в нём и id новой таблицы на сервере. Я попытался воспользоваться вторым из описанных там способов — править в hex-редакторе id таблиц в .ibd. Конечный результат был успешным, лишь пришлось повозиться с теми таблицами, где хранится много записей — в них id содержится не только в начале файла, но и повторяется в каждой странице, и для них больше подошёл бы первый способ (если, конечно, таких таблиц не слишком много).

Но перед тем, как всё получилось, меня ждал ещё один сюрприз. Я создал новую базу данных в Денвере на своём ноутбуке, попробовал, но ничего не заработало. Не понимает MySQL эти файлы, и всё тут. После изучения логов погибшего сервера, для уточнения версии MySQL, причина была найдена: там стоял Percona server.
Отправившись на поиски Percona для Windows, я наткнулся на описание его установки… на Андроид. «Почему бы и не поразвлечься?» — посмотрел я на свой простенький Fly IQ440. Установил Linux Deploy и Ubuntu. Процесс установки оказался не сложнее, чем подключение готового образа к VirtualBox (если на телефоне уже есть права root), но в отличие от VirtualBox на компьютере — здесь не пришлось заниматься колдовством с портами: сразу же заработал интернет, хоть через сотовую сеть, хоть через wifi. Подключившись к телефону через SSH с компьютера, последовал инструкции по вышеприведённой ссылке. Скачалось и без каких-либо проблем установилось необходимое ПО. Я ожидал, что на телефоне всё будет работать очень медленно, но был приятно удивлён: различий с «большим компьютером» на глаз можно и не заметить, а тесты скорости есть по приведённой ссылке. При этом, на самом телефоне, приложение работает в фоне и не вызывает никаких проблем с обычной работой аппарата.

После исправления ошибки для ARM-процессора в исходнике, Percona Server был благополучно скомпилирован и заработал. После решения проблем с восстановлением базы данных, решил систему оставить «на память». Теперь в домашней wifi-сети присутствует ещё один сервер, собранный в таком неожиданном месте.
Tags:
android, percona server, ibd

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.