Как я могу восстановить таблицы MySQL из файлов данных?

У меня есть база данных (все таблицы MyISAM), и машина, на которой работает MySQL, больше не загружается. Однако у нас есть все файлы данных MySQL из каталога данных. Как я могу восстановить данные из файлов MYD и FRM или любых других файлов, которые я должен просматривать в каталоге данных?

Я занимался поиском по этому вопросу, и похоже, что для MyISAM я должен просто скопировать подкаталог базы данных из старого каталога данных MySQL в новый каталог данных MySQL. Однако это не работает для меня. База данных с именем базы данных, которую я пытаюсь восстановить, отображается в списке баз данных в phpMyAdmin, но все таблицы отображаются как «используемые» и не содержат информации (например, количество строк, количество байтов, информация о столбцах). , и т.д.). Любая операция над этими таблицами (например, SELECT * FROM {table}, REPAIR {table}, CHECK {table}) возвращает ошибку "нет такой таблицы".

Один из инструментов, с которым я столкнулся в ходе поиска, — это DBACentral от MicroOLAP. У него есть компонент, который должен восстанавливать данные из файлов FRM/MYD, но когда я попытался его запустить, он не указал таблицы, которые можно было бы восстановить из моих файлов FRM/MYD.

Это рабочая станция разработчика с 32-битной версией Vista Business. Версия MySQL 5.0.27. После починки машины я пошел и получил точно такую ​​же версию MySQL (v5.0.27), думая, что если я просто собираюсь добавить двоичные файлы данных, я должен сделать это с той же версией MySQL. Это все еще не сработало.

Мы будем очень признательны за любые идеи... спасибо!

-Джош


person Josh    schedule 26.09.2010    source источник


Ответы (2)


  1. Установите ту же версию mysql.
  2. Удалите каталог mysql из каталога данных сервера и скопируйте его с разбившегося сервера. Это ключевой элемент
  3. скопируйте каталог базы данных, которую вы хотите восстановить, в каталог данных нового сервера
  4. запустить майскл.
  5. переключитесь на базу данных mysql: USE mysql; и запустите REPAIR TABLE <table name> для каждой таблицы.
  6. Сделайте то же самое с базой данных, которую вы хотите восстановить.

совет: убедитесь, что 2 каталога имеют такие же права доступа, как каталог данных

Если вы не сохранили базу данных mysql (каталог mysql в каталоге данных вашего старого сервера, вы можете попробовать:

  1. создайте базу данных с тем же именем, что и базу данных, которую вы хотите восстановить.
  2. Затем вы можете создать каждую таблицу (было бы хорошо использовать ту же структуру - у вас было бы больше шансов на восстановление).
  3. затем остановите сервер mysql и удалите файлы из каталога базы данных и перезапишите их файлами со старого сервера.
  4. запустите mysql и восстановите каждую таблицу.
person NickSoft    schedule 17.04.2011
comment
Привет, Ник, все эти шаги имеют смысл, и я уже пробовал их. Они не работали для меня. В этот момент я просто сдался и восстановил несколько старых резервных копий, которые у меня были в формате SQL. Они не были обновлены на 100%, но они были достаточно близки, чтобы я мог их использовать, что я и сделал. - person Josh; 20.04.2011

Я сдался. Я думаю, что ответ в том, что с моей конкретной версией MySQL это не работает. Надеюсь, с тех пор ситуация улучшилась.

person Josh    schedule 23.10.2012
comment
Какой была ваша конкретная версия MySQL? Я пытаюсь сделать что-то подобное. - person Sam Finnigan; 01.05.2013
comment
Я не помню - извините. А та машина, которая вышла из строя, теперь древняя история, так что я не могу проверить. Надеюсь, у вас больше успехов, чем у меня! - person Josh; 06.05.2013