По какой-то причине, когда я пытаюсь открыть свои таблицы, которые хранятся в файлах .frm
и .ibd
файлах (будь то в MySQL или phpmyadmin), это вызывает синтаксическую ошибку или говорит, что ее не существует.
Я читал другой пост, у которого была похожая проблема, но я не знаю, как проверить, innodb_file_per_table
включен ли он, и я в целом просто очень запутался. Я также преобразовал копию моего mysql-bin.000002
файла в текстовый файл, чтобы увидеть, что данные из моей базы данных не полностью потеряны.
База данных была создана в прошлом году. У меня есть 6 таких mysql-bin.00000
файлов, но по некоторым причинам они .000002
самые большие. Прямо сейчас, у меня есть .ibd
и .frm
файлы для всех моих баз данных, но я в недоумении, как я могу восстановить его обратно в MySQL, или , по крайней мере , в чем - то я могу читать.
Я использую WampServer 2.4 и MySQL 5.6.12 на Windows 2003 Server. Кроме того, я должен загрузить плагин в InnoDB?
Ответы:
Я наконец понял и решил свою проблему путем множества проб и ошибок. Для тех, у кого нет оригинального файла ibdata1, а есть только файлы .frm и .ibd, вот как я восстановил свои данные.
Я надеюсь, что это помогло, и дайте мне знать, если у вас есть какие-либо вопросы или комментарии! Кроме того, проверьте http://www.chriscalender.com/?tag=innodb-error-tablespace-id-in-file для других деталей.
источник
Got error -1 from storage engine
при запускеIMPORT TABLESPACE
. Но для меня MySQL 5.6 работал для таблиц, которые были созданы с использованием MySQL 5.5, так что все хорошо;). Если вы застряли с 5.5, вы должны следовать инструкциям в приведенной вами ссылке chriscalender .innodb_file_per_table
включили.Основной файл данных InnoDB - обычно называемый
ibdata
- необходим для того, чтобы MySQL мог понимать ваши файлы .ibd.Если вам нужно перемещать данные между серверами, используя двоичные файлы, вам следует аккуратно остановить MySQL, а затем переместить все файлы данных, включая файлы ibdata , между каталогами.
Более надежным механизмом перемещения данных между серверами в Windows будет использование (
mysqldump
) или экспорт базы данных из PHPMyAdmin (или аналогичного инструмента).Если бинарное ведение журнала было включено все время работы вашего сервера (на основании комментариев это может быть не так), вы также можете использовать
mysqlbinlog
для восстановления каждого оператора SQL, который вы выполняли на сервере, из файлов mysql-bin и таким образом воссоздать базу данных. В файлах mysql-bin должны быть метки времени Unix, которые помогут вам определить, насколько далеко они зашли.Если вы потеряли исходные файлы базы данных и все, что у вас осталось, это отдельные файлы .ibd, вам, возможно, придется прибегнуть к восстановлению данных в соответствии с рекомендациями Акузминского в комментариях.
MySQL 5.6 имеет некоторые новые функции для перемещения файлов данных InnoDB .ibd ( переносимые табличные пространства ), но они требуют определенных усилий, и для достаточно небольшой базы данных будет гораздо проще передавать данные с помощью
mysqldump
.источник
Wiki ответ, полученный из комментариев к вопросу от akuzminsky
Если вы видите
*.ibd
файлы, тоinnodb_file_per_table
естьON
, иначе все таблицы будут вibdata1
.Если он говорит, что таблица не существует, то таблица отсутствует в словаре InnoDB. Попробуйте свалить все таблицы в отдельные дампы sql (одна таблица - один файл). Те таблицы, которые вы не можете сбросить, вы можете восстановить с помощью TwinDB .
Бинарных пакетов пока нет. Вы должны получить исходный код из GitHub и скомпилировать его. См. Инструкции в словаре Recover InnoDB . Это довольно просто:
а потом
источник