Восстановление базы данных MySQL InnoDB - PullRequest
9 голосов
/ 22 сентября 2008

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

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

Ответы [ 4 ]

14 голосов
/ 22 сентября 2008

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

10 голосов
/ 17 июня 2012

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

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

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

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

  5. Пробег

    mysqld --defaults-file = mysql \ bin \ my.ini --standalone --console --innodb_force_recovery = 6

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

6 голосов
/ 22 сентября 2008

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

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

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

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

0 голосов
/ 17 марта 2014

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

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

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

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

...