2008-09-22 3 views
9

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

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

ответ

14

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

+0

В дополнение к файлам * .frm для InnoDB требуются файлы ibdata, ib_logfile * и/или * .ibd. – silfreed

+0

Что делать, если у вас есть только файлы ib_logfile * и .frm (вместе с месячной резервной копией)? любой шанс восстановиться в этом сценарии? или вам нужна ibdata для восстановления чего-либо вообще? – eglasius

6

О, мой ... у вас проблемы. Завершение работы базы данных. Резервное копирование файла innodb. Молитесь о том, что вы ничего не сделали после того, как вы сбросили базу данных.

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

Если вы решились по собственному усмотрению, возьмите это с собой: Data Recovery Toolkit for Innodb.

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

7

Восстановление InnoDB: (если ваша папка данных является C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ данные)

  1. Скопируйте папки базы данных (названные по имени базы данных), которые вы хотите восстановить в C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data
  2. Скопируйте 3 файла ibdata в папку данных ex. (C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ данные)

    _ib_logfile0 
    _ib_logfile1 
    _ibdata1 
    
  3. Получить размер _ib_logfile0 в мегабайтах (она должна быть такой же, как _ib_logfile1) с помощью файла правой кнопкой мыши -> Свойства

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

  5. Run

    MYSQLD --defaults-файл = MySQL \ Bin \ my.ini --standalone --console --innodb_force_recovery = 6

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

+0

не работает для меня - в phpMyAdmin Я могу видеть таблицы InnoDb, но не могу получить к ним доступ –

+0

Шаг 3/4 не уверены, что они что-то сделали. Пришлось удалить файлы в порядке, чтобы он фактически перезапустил mysql. Не знаете, какой шаг 5 делает ... Но шаг 1,2,5 и перезапущенный mysql, похоже, сработали! – msponagle

+0

Как и @msponagle. Я не смог выполнить все шаги, но выполнить шаги 1, 2, возможно, 3, а затем перезапустить службу, и если она не начнется, попробуйте перезагрузить компьютер. Это сработало для меня. – ingkevin

-2

Детальное решение можно найти здесь:

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^