Подтвердить что ты не робот

Восстановить базу данных mysql из файлов .frm

Я сбросил все мои таблицы каждый раз, чтобы получить резервную копию. Но позже я понимаю, что он хранит только файл .frm таблицы. Он не показывает файлы .MYD и .MYI таблицы. Поэтому у меня есть только мой .frm файл базы данных со мной, а также mydatabase - innodb. Могу ли я получить свою базу данных с данными в базе данных?

4b9b3361

Ответ 1

Да, это возможно. Это не достаточно просто скопировать .frm файлы в папку Databse, но вы также должны скопировать ib_logfiles и ibdata файл в папку данных. Я просто скопировал файлы .frm скопировал эти файлы и просто перезагрузил сервер, и моя база данных была восстановлена.

После копирования указанных файлов выполните следующую команду -

Судо Чоун -R mysql: mysql/var/lib/mysql

Приведенная выше команда изменит владельца файла под mysql и его папку на пользователя MySql. Что важно для mysql для чтения файлов .frm и ibdata.

Ответ 2

Просто может быть полезно для кого-то:

Я могу восстановить файлы frm после катастрофы, по крайней мере, я мог бы получить структуру таблицы из FRM файлов, выполнив следующие действия:

1- создайте несколько фиктивных таблиц с хотя бы одним столбцом и SAME NAME с файлами frm в новой базе данных mysql.

2-stop mysql service

3- скопируйте и вставьте старые файлы frm в вновь созданные файлы таблицы frm, он должен спросить вас, хотите ли вы перезаписать или нет для каждого. замените все.

4-start mysql service, и у вас есть структура вашей таблицы...

С уважением. anybudy

Ответ 3

Я также ответил на этот вопрос: https://dba.stackexchange.com/a/42932/24122

Недавно я испытал эту же проблему. Я нахожусь на Mac, поэтому я использовал MAMP для восстановления базы данных до точки, где я мог бы экспортировать ее в дамп MySQL.

Вы можете прочитать полное сообщение в блоге об этом здесь: http://www.quora.com/Jordan-Ryan/Web-Dev/How-to-Recover-innoDB-MySQL-files-using-MAMP-on-a-Mac

Вы должны иметь:

-ibdata1

-ib_logfile0

-ib_logfile1

-. FRM файлы из вашей папки mysql_database

-Расширенная установка MAMP/MAMP Pro, которую вы готовы уничтожить (если потребуется)

  • SSH на ваш веб-сервер (dev, production, без разницы) и перейдите в свою папку mysql (мой был в /var/lib/mysql для установки Plesk в Linux)
  • Сжатие папки mysql
  • Загрузите архив mysql-папки, который должен содержать все базы данных mySQL, будь то MyISAM или innoDB (вы можете просмотреть этот файл или переместить его в загружаемый каталог, если это необходимо)
  • Установить MAMP (Mac, Apache, MySQL, PHP)
  • Обзор/Приложения/MAMP/db/mysql/
  • Резервное копирование/Приложения/MAMP/db/mysql в zip-архив (на всякий случай)
  • Скопировать во все папки и файлы, включенные в архив папки mysql с производственного сервера (mt Plesk environment в моем случае) ЗА ИСКЛЮЧЕНИЕМ НЕ ПЕРЕЗАПИСАТЬ:

    -/Applications/MAMP/дб/MySQL/MySQL/

    -/Applications/MAMP/дб/MySQL/mysql_upgrade_info

    -/Applications/MAMP/дб/MySQL/performance_schema

  • И вуаля, теперь вы должны иметь доступ к базам данных из phpMyAdmin, какое облегчение!

Но мы не закончили, теперь вам нужно выполнить mysqldump, чтобы восстановить эти файлы в вашей рабочей среде, а интерфейс phpmyadmin истечет для больших баз данных. Выполните следующие шаги:

http://nickhardeman.com/308/export-import-large-database-using-mamp-with-terminal/

Скопировано ниже для справки. Обратите внимание, что при установке MAMP по умолчанию пароль "root".

Как запустить mysqldump для MAMP с помощью Terminal

БАЗА ДАННЫХ ЭКСПОРТА ИЗ МАМПА [1]

Шаг первый: Откройте новое окно терминала

Шаг второй: Перейдите к установке MAMP, введя следующую строку в терминале   cd/applications/MAMP/library/bin Нажмите клавишу ввода

Шаг третий: Напишите команду дампа   . /mysqldump -u [USERNAME] -p [DATA_BASENAME] > [PATH_TO_FILE] Нажмите клавишу ввода

Пример:

./mysqldump -u root -p wp_database > /Applications/MAMP/htdocs/symposium10_wp/wp_db_onezero.sql

Быстрый совет: быстро перейти к папке можно перетащить папку в окно терминала, и она будет записывать местоположение папки. Это был отличный день, когда кто-то показал мне это.

Шаг четвертый: Эта строка текста должна появиться после нажатия кнопки ввода Введите пароль: Итак, угадайте, что, введите свой пароль, имейте в виду, что буквы не появятся, но они есть Нажмите клавишу ввода

Шаг пятый: Проверьте местоположение места хранения вашего файла, если он есть, УСПЕХ Теперь вы можете импортировать базу данных, которая будет показана ниже.

Теперь, когда вы экспортируете свою базу данных mysql, вы можете импортировать ее в рабочей среде.

Ответ 4

Я использовал mysqlfrm, который является отличным инструментом, который генерирует sql-код создания таблицы из файлов .frm. Я получал эту неприятную таблицу, не найденную ошибку, хотя таблицы были перечислены. Таким образом, я использовал этот инструмент для регенерации таблиц. В ubuntu вам необходимо установить это как:

sudo apt install mysql-utilities

тогда

mysqlfrm --diagnostic mysql/db_name/ > db_name.sql

Создайте новую базу данных, а затем вы можете использовать

mysql -u username -p < db_name.sql

Однако это даст вам таблицы, но не данные. В моем случае этого было достаточно.

Ответ 5

Я просто скопировал папки базы данных в папку данных в MySQL, т.е. если у вас есть база данных под названием alto, то найдите папку alto в своей папке MySQL → Data в своей резервной копии и скопируйте всю папку alto и пройдите мимо нее установлена ​​MySQL → папка с данными, перезапустите MySQL, и это работает отлично.

Ответ 6

Скопируйте все файлы и замените их на /var/lib/mysql, после этого вы должны сменить владельца файлов на mysql Это так важно, если перезапуск mariadb.service был неудачным

chown -R mysql: mysql/var/lib/mysql/*

и

chmod -R 700/var/lib/mysql/*

Ответ 7

Перед началом работы вы должны остановить службы WAMP или, по крайней мере, перезапустить службы при появлении запроса на их запуск.

На старом экземпляре сервера перейдите в папку данных MySQL по умолчанию, это должно выглядеть примерно так же, как C:\wamp\bin\mysql\mysql5.1.53\data\, где mysql5.1.53 будет номером версии ранее установленной базы данных MySQL.

Внутри этой папки вы увидите несколько файлов и папок. Папки являются фактическими базами данных MySQL и содержат кучу файлов .frm, которые нам потребуются. Вы должны распознавать имена папок в качестве имен баз данных. Эти папки и все их содержимое могут быть скопированы непосредственно в папку данных MySQL, вы можете пренебречь базами данных по умолчанию mysql, performance_schema, test.

Если вы запустили сервер сейчас, вы увидите, что базы данных подхвачены, однако базы данных не будут содержать ни одну из таблиц, которые были скопированы. Чтобы содержимое базы данных было выбрано, обратно в папку данных вы должны увидеть файл ibdata1, это файл данных для таблиц, скопируйте его прямо в папку данных, у вас должен быть файл в вашей новой папке данных под названием "ibdata1", чтобы вы могли переименовать ее в ibdata1.bak перед копированием через ibdata1 из старой папки данных MySQL.

Как только это будет сделано Перезапустите все службы WAMP. Вы можете использовать PhpMyAdmin, чтобы проверить, успешно ли восстановлены ваши базы данных.

Ответ 8

создать новую базу данных с тем же именем скопируйте файлы .frm.ibd в xampp/mysql/data/[databasename]/

вам также понадобится файл ibdata который находится внутри

XAMPP/MySQL/данных/ скопируйте предыдущий файл ibdata1 вставьте вставьте файл и замените его на существующий файл ibdata​​p >

[ предостережение: вы можете потерять содержимое базы данных, которые были недавно созданы в новом файле ibdata​​strong > )

Ответ 9

Да! Это возможно

Долгий подход, но вы можете получить все данные, используя только файлы .frm. Конечно, вам нужны другие файлы в каталоге mysql/data.

Моя проблема

Однажды мой жесткий диск сломался и получил ошибку при загрузке синего экрана. Я пытаюсь подключиться к нескольким машинам, но это не сработало. Так как это ошибка загрузки, я задумался о файлах. и я попробовал с вторичным жестким диском и попытаться восстановить папки и файлы. Я также сделал резервную копию полной папки xampp c: /xampp всякий случай, поскольку у меня не было резервных c: /xampp последних баз данных, я очень переживал, как получить базу данных. У нас есть много клиентов, управление проектами и личный документ в базе данных.

Ни один из методов, перечисленных в комментарии stackoverflow, не работает, по крайней мере, для меня. Мне потребовалось 2 полных дня, чтобы найти ответ из файла .frm. Сталкивались с множеством подходов от многих людей, но все было разочаровано и получало ту или иную ошибку при реализации. Если большинство из них работает (на основе своих комментариев), то чего мне не хватает.

Поскольку я был в таком отчаянии, я даже переустанавливал Windows, что приводило к потере всех моих программ, и пытался снова. Но все та же ошибка

СПАСИБО Дастину Дэвису

Я нашел решение в его блоге, и мне удалось заставить его работать точно так же, как он. Позвольте мне отдать должное этому парню, Дастину Дэвису (https://dustindavis.me/restoring-mysql-innodb-files-on-windows/). Отсюда можно перейти к его блогу и попробовать его метод, довольно понятный и понятный.

Но есть кое-что, что я обнаружил при попытке его подхода, который он не объяснил в своем блоге, и я постараюсь объяснить, как я это сделал и что вам нужно искать.

Точно следуйте этому

ВАЖНО! Обязательно установите ту же версию XAMPP. Вы не можете скопировать вставку из старого XAMPP в новую версию. Это приведет к __config или __tracking.

Как проверить свою версию XAMPP

  1. Перейдите в папку xampp (ваш резервный файл xampp).
  2. Откройте файл readme_en.txt. который находится в корневом каталоге xampp.
  3. Вы должны увидеть версию сверху. ###### ApacheFriends XAMPP Version XXXX ######

Файлы требуют восстановления

xampp(old folder)/mysql/data/

ibdata1
ib_logfile0
ib_logfile1
<databasename>/*.frm
<databasename>/*.ibd

Шаг 1

  1. После установки той же версии xampp.
  2. Не запускайте apache или myql

Шаг 2

  • Перейдите в папку mysql/data и замените ibdata1, ib_logfile0 и ib_logfile1
  • Теперь скопируйте и вставьте папку database из вашей старой резервной копии xampp во вновь установленную папку xampp c: /xampp/mysql/data/, содержащую .frm и .ibd, если вы не уверены, попробуйте использовать одну базу данных.

Шаг 3

  • Перейдите в c: /xampp/mysql/bin и найдите my.cn
  • Откройте файл my.cn и найдите #skip-innodb а под ним найдите строку, в которой говорится, что innodb_log_file_size=5M измените его на 170M. innodb_log_file_size=170M. Это ваш размер файла журнала, и если вы не уверены, просто установите его на 170

Шаг 4

  • Теперь откройте файл mysql_start.bat (пакетный файл Windows), который находится в c: /xampp/.
  • Добавьте –innodb_force_recovery=6 после ... --console

    ....
    
    mysql\bin\mysqld --defaults-file=mysql\bin\my.ini --standalone --console
    –innodb_force_recovery=6
    if errorlevel 1 goto error
    goto finish
    

Шаг 5

  • Теперь запустите свой Apache и Mysql.
  • Перейдите к своему phpmyadmin и проверьте свою базу данных и ее таблицы. если вы не получили никаких ошибок, вы на правильном пути.
  • Остановите Apache и Mysql и скопируйте и вставьте остальные базы данных.