Восстановление данных MySQL (innoDB) — отсутствуют файлы .frm, но ibdata не повреждены

Восстановление данных MySQL (innoDB) — отсутствуют файлы .frm, но ibdata не повреждены

Недавний сбой сервера оставил меня с внешне нетронутым файлом ibdata, но только с половиной моих содержащих .frm каталогов. Я скопировал все это на новую установку mysql и успешно восстановил базы данных, для которых у меня все еще были файлы .frm. Мой вопрос - возможно ли как-то восстановить файлы .frm из файла ibdata? Или как-то изменить файлы .frm из версии разработки той же базы данных так, чтобы их можно было использовать для восстановления?

К сожалению, восстановление из резервной копии не является приемлемым вариантом.

Отредактировано для уточнения: я пытался восстановить базы данных с помощью локально сгенерированных файлов .frm, содержащих ту же схему, — безрезультатно, даже при innodb_force_recovery = 1.

решение1

Я никогда этого не делал, но ваш вопрос касается инструментов, которые я использую, поэтому мне стало интересно! Похоже, это действительно возможно, вот пример:

http://www.chriscalender.com/?p=28

Иногда вам может понадобиться восстановить таблицу, когда у вас есть только файл .ibd. В этом случае, если вы попытаетесь загрузить его в новый экземпляр, вы, скорее всего, столкнетесь с некоторыми ошибками о несовпадении идентификатора таблицы. И на самом деле нет способа обойти это.

Однако я нашел два решения этой проблемы:

Примечание: Вам понадобятся файл .ibd и оператор CREATE TABLE для каждой таблицы, которую вы хотите восстановить с помощью этих методов.

  • Имитируйте внутренний счетчик таблиц InnoDB. То есть, создавайте рабочие таблицы (с включенным innodb_file_per_table), пока внутренний указатель идентификатора таблицы не станет равен (1 – id_of_ibd_table_you_need_to_restore). (См. Метод № 1)
  • Вручную отредактируйте шестнадцатеричный файл .ibd, изменив идентификатор таблицы. (См. Метод №2)

Сами шаги занимают несколько страниц, поэтому я не стал их сюда вставлять.

Еще один пост по теме:http://www.mysqlperformanceblog.com/2011/05/13/connecting-orphaned-ibd-files/

Мне будет любопытно узнать, сработает ли это. Похоже, многие люди уже успешно это использовали.

Связанный контент