我每周都会把所有桌子都丢掉来备份.但后来我明白它只存储表的.frm文件.它没有显示表的.MYD和.MYI文件.所以我只有我的数据库的.frm文件,mydatabase也是innodb.那么我可以在数据库中获取包含数据的数据库吗?
use*_*187 74
是的,这是可能的.这是不够的,你只是拷贝.frm文件到该文件夹DATABSE但你也需要复制ib_logfiles和ibdata文件到您的数据文件夹.我只是复制.frm文件并复制这些文件,只需重新启动服务器,我的数据库就会恢复.
小智 18
可能对某人有用:
我只能在灾难发生后恢复frm文件,至少我可以通过执行以下操作从FRM文件中获取表结构:
1-在新的mysql数据库中创建一些带有至少一列的虚拟表和带有frm文件的SAME NAME.
2站mysql服务
3-将旧的frm文件复制并粘贴到新创建的表的frm文件中,它应该询问您是否要覆盖每个文件.全部替换.
4启动mysql服务,你有你的表结构......
问候.anybudy
小智 9
我在这里也回答了这个问题: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
mysql_database文件夹中的-.FRM文件
- 您愿意销毁的MAMP/MAMP Pro的新安装(如果需要)
在所有文件夹和文件复制包含在从生产服务器(在我的情况MT的Plesk环境),除了不覆盖MySQL的文件夹的档案:
- /应用程序/ MAMP/DB/MySQL的/ mysql的/
- /应用程序/ MAMP/DB/mysql /下mysql_upgrade_info
- /应用程序/ MAMP/DB/mysql /下performance_schema
瞧,你现在应该可以从phpMyAdmin访问数据库,真是一种解脱!
但是我们还没有完成,你现在需要执行一个mysqldump来将这些文件恢复到你的生产环境,并且phpmyadmin接口会超时用于大型数据库.按照这里的步骤:
http://nickhardeman.com/308/export-import-large-database-using-mamp-with-terminal/
复制如下以供参考.请注意,在默认的MAMP安装中,密码为"root".
来自MAMP的出口数据库[1]
第一步: 打开一个新的终端窗口
第二步: 通过在终端cd/applications/MAMP/library/bin中输入以下行导航到MAMP安装点击回车键
第三步: 编写转储命令./mysqldump -u [USERNAME] -p [DATA_BASENAME]> [PATH_TO_FILE]点击回车键
例:
./mysqldump -u root -p wp_database > /Applications/MAMP/htdocs/symposium10_wp/wp_db_onezero.sql
Run Code Online (Sandbox Code Playgroud)
快速提示:要快速导航到文件夹,您可以将文件夹拖到终端窗口,它将写入文件夹的位置.有人告诉我这是一个伟大的日子.
第四步: 您按下回车键输入密码后,文本的这一行应该出现:那么你猜怎么着,请键入密码,请记住,这些字母将不会出现,但他们在那里敲回车键
第五步: 检查存储文件的位置,如果存在,SUCCESS现在您可以导入数据库,下面将对此进行概述.
现在您已经导出了mysql数据库,可以在生产环境中导入它.
我利用了mysqlfrm哪个是一个很好的工具,它从.frm文件生成表创建sql代码.虽然正在列出表格,但我发现这个令人讨厌的表未找到错误.因此,我使用此工具重新生成表.在ubuntu中,您需要将其安装为:
sudo apt install mysql-utilities
Run Code Online (Sandbox Code Playgroud)
然后,
mysqlfrm --diagnostic mysql/db_name/ > db_name.sql
Run Code Online (Sandbox Code Playgroud)
创建一个新的数据库然后你可以使用,
mysql -u username -p < db_name.sql
Run Code Online (Sandbox Code Playgroud)
但是,这将为您提供表格而不是数据.就我而言,这已经足够了.
虽然方法很长,但您只需使用文件即可获取所有数据.frm。当然,您还需要mysql/data目录中的其他文件。
有一天,我的硬盘崩溃并出现启动蓝屏错误。我尝试连接多台机器,但没有成功。由于这是一个启动错误,我担心这些文件。我尝试使用辅助硬盘并尝试恢复文件夹和文件。我还备份了完整的 xampp 文件夹c:/xampp以防万一,因为我没有最近的数据库的备份,所以我真的很担心如何检索数据库。我们的数据库中有很多客户的项目管理和个人文档。
StackOverflow 评论中列出的方法都不起作用,至少对我来说是这样。我花了整整两天的时间在谷歌上搜索从文件中获取数据的答案.frm。遇到了很多人的多种方法,但一切都令人沮丧,并且在实施时遇到了一些错误或其他错误。如果他们中的大多数人都能正常工作(根据他们的评论),那么我错过了什么。
因为我非常绝望,我什至重新安装了 Windows,导致我丢失了所有软件并再次尝试。但还是同样的错误
\n我在他的博客中找到了解决方案,并设法使其按照与他完全相同的方式工作。让我把功劳归功于达斯汀·戴维斯 (Dustin Davis) ( https://dustindavis.me/restoring-mysql-innodb-files-on-windows/ )。您可以从这里跳转到他的博客并尝试他的方法,非常清晰且易于遵循。
\n但是,在尝试他的方法时,我发现了一些他没有在博客中解释的东西,我将尽力解释我是如何做的以及您需要寻找什么。
\n重要提示:确保安装相同版本的 XAMPP。您无法从旧版 XAMPP 复制粘贴到新版本。这将导致__config或__tracking错误。
readme_en.txt文件。它位于 xampp 的根目录中。###### ApacheFriends XAMPP Version X.X.XX ######xampp(old folder)/mysql/data/
ibdata1\nib_logfile0\nib_logfile1\n<databasename>/*.frm\n<databasename>/*.ibd\nRun Code Online (Sandbox Code Playgroud)\nmysql/data文件夹并替换ibdata1, ib_logfile0,和ib_logfile1database现在,将您的文件夹从旧的 xampp 备份复制粘贴到新安装的c:/xampp/mysql/data/包含.frm和.ibd文件的 xampp 文件夹中,如果您不确定,请尝试使用一个数据库。c:/xampp/mysql/bin寻找my.cn。my.cn文件并查找#skip-innodb并在该文件下查找显示将innodb_log_file_size=5M其更改为 的行170M。innodb_log_file_size=170M。这是您的日志文件大小,如果您不确定,请将其设置为170mysql_start.bat现在打开目录中的文件(Windows 批处理文件) c:/xampp/。
添加\xe2\x80\x93innodb_force_recovery=6到后... --console
....\n\n mysql\\bin\\mysqld --defaults-file=mysql\\bin\\my.ini --standalone --console -\xe2\x80\x93innodb_force_recovery=6\n if errorlevel 1 goto error\n goto finish\nRun Code Online (Sandbox Code Playgroud)\nPHPMyAdmin并检查您的数据库及其表。如果您没有收到任何错误,那么您就走在正确的轨道上。