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

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

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

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
10
0
32 969
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

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

InnoDB требует файлы ibdata, ib_logfile * и / или * .ibd в дополнение к файлам * .frm.

silfreed 17.05.2010 22:59

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

eglasius 04.09.2010 01:10

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

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

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

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

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

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

van_folmert 25.03.2015 16:58

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

msponagle 27.05.2016 07:41

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

ingkevin 09.01.2018 20:18

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

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

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

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

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