Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

  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 или любого другого инструмента.

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top