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

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

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


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


Ответы (4)


arrow_upward
14
arrow_downward

Файлы .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

arrow_upward
12
arrow_downward

Восстановление 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

arrow_upward
6
arrow_downward

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

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

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

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

person Community    schedule 22.09.2008

arrow_upward
-2
arrow_downward

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

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

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

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

person Ragen Dazs    schedule 17.03.2014