Я сбросил все мои таблицы каждый раз, чтобы получить резервную копию. Но позже я понимаю, что он хранит только файл .frm таблицы. Он не показывает файлы .MYD и .MYI таблицы. Поэтому у меня есть только мой .frm файл базы данных со мной, а также mydatabase - innodb. Могу ли я получить свою базу данных с данными в базе данных?
Восстановить базу данных mysql из файлов .frm
Ответ 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 вставьте вставьте файл и замените его на существующий файл ibdatap >
[ предостережение: вы можете потерять содержимое базы данных, которые были недавно созданы в новом файле ibdatastrong > )
Ответ 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
- Перейдите в папку xampp (ваш резервный файл xampp).
- Откройте файл
readme_en.txt
. который находится в корневом каталоге xampp. - Вы должны увидеть версию сверху.
###### ApacheFriends XAMPP Version XXXX ######
Файлы требуют восстановления
xampp(old folder)/mysql/data/
ibdata1
ib_logfile0
ib_logfile1
<databasename>/*.frm
<databasename>/*.ibd
Шаг 1
- После установки той же версии xampp.
- Не запускайте apache или myql
Шаг 2
- Перейдите в папку
mysql/data
и заменитеibdata1
,ib_logfile0
иib_logfile1
- Теперь скопируйте и вставьте папку
database
из вашей старой резервной копии xampp во вновь установленную папку xamppc: /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 и скопируйте и вставьте остальные базы данных.