Восстановление базы данных MySQL InnoDB

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

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


person Jaymie Thomas    schedule 22.09.2008    source источник


Ответы (4)


Файлы .frm не являются файлами данных, они просто хранят «информацию словаря данных» (см. руководство по MySQL). InnoDB хранит свои данные в файлах ib_logfile *. Это то, что вам нужно для резервного копирования / восстановления. Дополнительные сведения см. здесь.

person tpk    schedule 22.09.2008
comment
InnoDB требует файлы ibdata, ib_logfile * и / или * .ibd в дополнение к файлам * .frm. - person silfreed; 17.05.2010
comment
что, если у вас есть только файлы ib_logfile * и .frm (вместе с резервной копией, сделанной несколько месяцев назад)? есть ли шанс на выздоровление при таком раскладе? или вам вообще нужна ibdata для восстановления чего-либо? - person eglasius; 04.09.2010

Восстановление innodb: (при условии, что ваша папка данных - C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data)

  1. Скопируйте папки с базами данных (названные по имени базы данных), которые вы хотите восстановить, в C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data.
  2. # P2 #
    _ib_logfile0
    _ib_logfile1
    _ibdata1
    
  3. Получите размер _ib_logfile0 в МБ (он должен быть таким же, как _ib_logfile1), щелкнув файл правой кнопкой мыши -> Свойства

  4. Отредактируйте файл конфигурации mysql (mysql \ bin \ my.ini), чтобы innodb_log_file_size = 343M был точно таким же, как размер файлов ibdata.

  5. # P5 #
    # P6 #
  6. Теперь ваши данные должны вернуться в вашу базу данных. Экспортируйте их с помощью phpmysql или любого другого инструмента.

person Community    schedule 17.06.2012
comment
у меня не работает - в phpMyAdmin я вижу таблицы InnoDb, но не могу получить к ним доступ - person van_folmert; 25.03.2015
comment
Шаг 3/4. Неуверенные, сделали ли они что-нибудь. Пришлось удалить файлы, чтобы перезапустить mysql. Не уверен, что делает шаг 5 ... Но шаги 1,2,5 и перезапуск mysql, похоже, сработали! - person msponagle; 27.05.2016
comment
Как говорит @msponagle. Я не смог выполнить все шаги, но, по сути, шаги 1, 2, может быть, 3, затем перезапустите службу, и если она не запустится, попробуйте перезагрузить компьютер. У меня это сработало. - person ingkevin; 09.01.2018

О боже ... у тебя проблемы. Выключите базу данных. Сделайте резервную копию файла innodb. Молитесь, чтобы вы НИЧЕГО не сделали после того, как сбросили базу данных.

Ребята из Percona (включая авторов блога о производительности MySQL) должны быть в состоянии помочь вам: Percona экстренная поддержка.

Если вы все-таки решаетесь самостоятельно, возьмите с собой следующее: Data Recovery Toolkit для Innodb .

Логистика этого? Вы должны прочитать каждую страницу (страница терминала компьютера ... блок размером 16 КБ в случае Innodb) и таким образом перестроить свои данные. Это очень низкоуровневая работа (мы говорим, откройте ваш шестнадцатеричный редактор и начните считать байты, если инструментарий не делает этого за вас), и если вы не очень опытный программист, вам будет больно .

person Community    schedule 22.09.2008

Подробное решение вы можете найти здесь:

http://www.unilogica.com/mysql-innodb-recovery/ (статья на португальском)

Помимо флага innodb_force_recovery, я нашел другое решение: innodb_file_per_table, которое разбивает таблицы InnoDB в каждом файле, например таблицы MyISAM.

При аварийном восстановлении вы можете потерять меньше данных, чем в одном файле ibdata1.

person Ragen Dazs    schedule 17.03.2014