Мне нужно восстановить базу данных, которая была случайно сброшена в MySQL 5.0. Из-за проверки файлов резервных копий у меня, кажется, есть только файлы .FRM для хранения данных базы данных.
Может ли кто-нибудь посоветовать, все ли мне нужно для восстановления / импорта базы данных из резервной копии, или есть другие файлы, которые мне нужно передать, чтобы завершить это?






Файлы .frm не являются файлами данных, они просто хранят «информацию словаря данных» (см. Руководство по MySQL). InnoDB хранит свои данные в файлах ib_logfile *. Это то, что вам нужно для резервного копирования / восстановления. Подробнее см. здесь.
что, если у вас есть только файлы ib_logfile * и .frm (вместе с резервной копией, сделанной несколько месяцев назад)? есть ли шанс на выздоровление при таком раскладе? или вам вообще нужна ibdata для восстановления чего-либо?
О боже ... у тебя проблемы. Выключите базу данных. Сделайте резервную копию файла innodb. Молитесь, чтобы вы НИЧЕГО не сделали после того, как сбросили базу данных.
Ребята из Percona (включая авторов MySQL Performance Blog) должны быть в состоянии помочь вам: Аварийная поддержка Percona.
Если вы все-таки решаетесь самостоятельно, возьмите это с собой: Набор инструментов для восстановления данных для Innodb.
Логистика этого? Вы должны прочитать каждую страницу (страница терминала компьютера ... блок размером 16 КБ в случае Innodb) и таким образом перестроить свои данные. Это очень низкоуровневая работа (мы говорим, откройте ваш шестнадцатеричный редактор и начните считать байты, если инструментарий не делает этого за вас), и если вы не очень опытный программист, вам будет больно .
Восстановление innodb: (при условии, что ваша папка данных - C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data)
Скопируйте 3 файла ibdata в папку данных, например. (C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data)
_ib_logfile0 _ib_logfile1 _ibdata1
Получите размер _ib_logfile0 в МБ (он должен быть таким же, как _ib_logfile1), щелкнув файл правой кнопкой мыши -> Свойства
Отредактируйте файл конфигурации mysql (mysql \ bin \ my.ini), чтобы innodb_log_file_size = 343M был точно таким же, как размер файлов ibdata.
Пробег
mysqld --defaults-file=mysql\bin\my.ini --standalone --console --innodb_force_recovery=6
Теперь ваши данные должны вернуться в вашу базу данных. Экспортируйте их с помощью phpmysql или любого другого инструмента.
у меня не работает - в phpMyAdmin я вижу таблицы InnoDb, но не могу получить к ним доступ
Шаг 3/4. Не уверены, сделали ли они что-нибудь. Пришлось удалить файлы, чтобы перезапустить mysql. Не уверен, что делает шаг 5 ... Но шаги 1,2,5 и перезапуск mysql, похоже, сработали!
Как говорит @msponagle. Я не смог выполнить все шаги, но, по сути, шаги 1, 2, может быть, 3, затем перезапустите службу, и, если она не запустится, попробуйте перезагрузить компьютер. У меня это сработало.
Подробное решение вы можете найти здесь:
http://www.unilogica.com/mysql-innodb-recovery/ (статья на португальском языке)
Помимо флага innodb_force_recovery, я нашел другое решение: innodb_file_per_table, которое разбивает таблицы InnoDB в каждом файле, например, таблицы MyISAM.
При аварийном восстановлении вы можете потерять меньше данных, чем в одном файле ibdata1.
InnoDB требует файлы ibdata, ib_logfile * и / или * .ibd в дополнение к файлам * .frm.