Сбой сервера Windows 2003 — теперь в 2008 — файл MySQL IBData1 показывает только таблицы по умолчанию

Перерыл весь сайт, ответа на этот вопрос не нашел, поэтому спрошу. Прошу прощения, если это где-то здесь.

У меня был сервер MySQL 5.5.15, работающий на старом сервере Windows 2003. Этот сервер наконец вышел из строя из-за проблем с жестким диском и материнской платой. Теперь у меня есть сервер Windows 2008. Я поставил на него MySQL 5.5.15, поэтому у меня было соответствующее программное обеспечение для первого шага.

Я переместил все файлы данных, которые у меня были. Таким образом, это включает в себя my.ini, ibdata1 и два файла журнала, группу файлов mysql-bin с датами за декабрь прошлого года. Я не смог найти файлы .frm.

Затем я запустил mysqld --console, и он запустился нормально. Нет ошибок.

Затем я отдельно запустил mysql и попросил посмотреть базы данных. Все, что он сообщил, это три стандартные схемы: information_schema, mysql и performance_schema. Когда я спрашиваю о пользователях, у него есть по умолчанию. Мой файл ibdata1 весит 641 МБ.

Я попытался запустить его с различными значениями для innodb_force_recovery - без изменений. Он по-прежнему запускается плавно и по-прежнему показывает только эти данные.

ОБНОВЛЕНИЕ 13.09.2013. Оказывается, моя система сильно запуталась во время обновления прошлой осенью с 5.1 до 5.5. Несмотря на то, что в ini-файле четко сказано, что данные должны храниться в одном месте, должна быть запись в реестре или что-то еще, указывающее на 5.1. Таким образом, хотя три основных файла — IBDATA1 и тому подобное — находились в каталоге 5.5, все соответствующие файлы .frm находились в каталоге 5.1.

Когда я собрал все части вместе на своем сервере 2003 года с соответствующим программным обеспечением MySQL 5.5, POOF, пять баз данных WordPress экспортировались полностью плавно, со всеми данными после сбоя. Эти пять баз данных запущены и работают на новом сервере. С ними все в порядке. У этих пяти файлов в каталогах были только файлы .frm, и они были указаны там как INNODB. Так что данные действительно были в файле IBDATA1, который у меня был.

Остаются три оставшиеся базы данных форума UBB. У них есть файлы .frm, а также .myi и .myd в каталогах. Файлы .frm указывают, что это таблицы MYISAM. Я преобразовал их все в INNODB сразу после обновления. Таким образом, кажется, что эти файлы .frm не те, которые идут с файлом IBDATA1. Но я не могу найти другие файлы .frm на старом диске C. Мне удалось успешно экспортировать данные, которые были в этих файлах .myi / .myd — это было состояние данных непосредственно перед тем, как я преобразовал их в INNODB в декабре прошлого года. Это, по крайней мере, заставляет форумы работать и работать с данными за 8 или около того лет, но, конечно, последние 9 месяцев все еще отсутствуют. Все после преобразования INNODB «захвачено» в файле IBDATA1.

Я знаю, что преобразовал таблицы в INNODB. Я знаю, что этот файл INNODB, который у меня есть (IBDATA1), использовался активно, так как я только что получил из него весь контент wordpress. По-видимому, теперь мне нужно найти «правильные» файлы .frm для этого — или найти способ извлечь данные из файла IBDATA1 без файлов .frm. В качестве альтернативы, могу ли я отредактировать файлы .frm, которые у меня есть, и изменить их с того, чтобы сказать, что эти таблицы являются MyISAM (их текущее состояние), на то, что они являются INNODB (что на самом деле они и есть)?

Я открыт для предложений.

Лиза


person Lisa    schedule 12.09.2013    source источник


Ответы (1)


Я не уверен, что мне действительно нужно спрашивать, но вы уверены, что помещаете файлы в правильный каталог? Тот факт, что вы заменили файл IBData1 и у вас все еще есть старые пользователи после перезагрузки сервера...

Насколько мне известно, information_schema и performance_schema на самом деле являются представлениями, созданными из нефайловых источников, поэтому они не будут частью файла IBData1.

Хотя у меня больше опыта работы с системами Linux, я знаю, что MySQL привередлив к владельцам и разрешениям файлов данных.

Кроме того, я бы переместил файлы журнала из каталога данных (пока сервер остановлен), поскольку текущие, вероятно, все равно будут бесполезны, а новые все равно будут заполнены нулями при запуске mysql.

Если вы уже проверили разрешения и права собственности, также проверьте, установлен ли innodb_file_per_table в вашем my.cnf, потому что в этом случае ваши базы данных фактически будут находиться в подпапках каталога данных. Тот факт, что файл IBData1 большой, может ввести в заблуждение, но в большинстве версий MySQL он фактически не сжимается после разделения данных на отдельные файлы.

person calcinai    schedule 12.09.2013
comment
Большое спасибо за быстрый ответ. Файл ibdata1 и два его файла журнала получают свежие даты последнего изменения после того, как я запускаю и останавливаю сервер MySQL, поэтому они просматриваются и доступны. В моем первоначальном тестировании я попытался выполнить раунд, в котором я начал его без двух файлов журнала, просто чтобы посмотреть, что произошло. Он выдал небольшую ошибку, создал два свежих файла журнала и запустился. Результаты были такими же. У меня есть пользователи по умолчанию, базы данных по умолчанию и нет моего собственного контента. - person Lisa; 12.09.2013
comment
Я только что обновил свой ответ, так как он был немного большим для комментария. Этот вопрос действительно относится к сбою сервера. - person calcinai; 12.09.2013
comment
Calcinai. Как бы странно это ни звучало, добавление этих каталогов данных действительно имело значение, насколько MySQL тогда думал, что у него есть доступные базы данных. Я добавил каталоги данных, и пуф пять блогов WordPress были прекрасно видны и экспортируемы. Он отлично работал с файлами журнала там. - person Lisa; 13.09.2013
comment
Приятно слышать! - person calcinai; 14.09.2013