从.frm文件恢复mysql数据库

我每个星期都把我所有的桌子都扔掉了。 但后来我明白,它只存储表的.frm文件。 它没有显示表格的.MYD和.MYI文件。 所以我只有我的数据库我的.frm文件,而且mydatabase是innodb。 那么我可以用数据库中的数据来获取我的数据库吗?

是的,这是可能的。 仅仅将.frm文件复制到ib_logfiles文件夹是不够的,但还需要将ib_logfilesibdata文件复制到数据文件夹中。 我刚才复制.frm文件并复制这些文件,只需重新启动服务器,我的数据库被恢复。

只是可能对某人有用:

我只能在发生灾难之后恢复frm文件,至less我可以通过执行以下操作来从FRM文件中获取表结构:

1-创build一些至less有一列的虚拟表,并在新的mysql数据库中创build带有frm文件的SAME NAME。

2停止mysql服务

3-将旧的frm文件复制并粘贴到新创build的表的frm文件中,它会询问您是否要覆盖每个文件。 全部replace。

4 – 启动mysql服务,你有你的表结构…

问候。 anybudy

我也在这里回答了这个问题: 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的新鲜安装(如果需要的话)

  1. SSH到您的Web服务器(开发,生产,没有区别),并浏览到您的MySQL文件夹(我的是在/ var / lib / mysql的Linux上的Plesk安装)
  2. 压缩mysql文件夹
  3. 下载一个应该包含所有mySQL数据库的mysql文件夹的存档,无论是MyISAM还是innoDB(如果需要的话,你可以将这个文件scp或者移动到可下载的目录)
  4. 安装MAMP(Mac,Apache,MySQL,PHP)
  5. 浏览到/ Applications / MAMP / db / mysql /
  6. 备份/应用程序/ MAMP / DB / MySQL的一个zip档案(以防万一)
  7. 从生产服务器拷贝包含在mysql文件夹存档中的所有文件夹和文件(在我的情况下,是在Plesk环境中)除了不要覆盖:

    – /应用程序/ MAMP / DB / MySQL的/ mysql的/

    – /应用程序/ MAMP / DB / mysql /下mysql_upgrade_info

    – /应用程序/ MAMP / DB / mysql /下performance_schema

  8. 而且瞧,你现在应该可以从phpMyAdmin访问数据库了,真是一种解脱!

但是我们还没有完成,现在需要执行一个mysqldump来将这些文件恢复到您的生产环境,并且phpmyadmin接口超时了大型数据库。 按照这里的步骤:

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

复制下面以供参考。 请注意,在默认的MAMP安装中,密码是“root”。

如何使用terminal运行MAMP的mysqldump

从MAMP出口数据库[1]

第一步:打开一个新的terminal窗口

第二步:通过在terminalcd / applications / MAMP / library / bin中input以下行来导航到MAMP安装点击回车键

第三步:编写dump命令./mysqldump -u [USERNAME] -p [DATA_BASENAME]> [PATH_TO_FILE]点击回车键

例:

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

快速提示:要快速导航到文件夹,您可以将文件夹拖入terminal窗口,并将写入文件夹的位置。 当有人向我展示这一点时,这是一个伟大的日子。

第四步:input密码后,出现以下这行文字:input密码:input密码,记住密码不会出现,但是他们在那里按回车键

第五步:检查存储文件的位置,如果存在,成功现在您可以导入数据库,这将在下面列出。

现在您已经导出了mysql数据库,您可以将其导入到生产环境中。

我使用了mysqlfrm这是一个很好的从.frm文件生成表创buildsql代码的工具。 虽然表被列出,但我得到这个令人讨厌的表没有find错误。 因此我使用这个工具来重新生成表格。 在Ubuntu中,你需要安装这个:

 sudo apt install mysql-utilities 

然后,

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

创build一个新的数据库,然后你可以使用,

 mysql -u username -p < db_name.sql 

但是,这将给你的表格,但不是数据。 就我而言,这足够了。

我只是复制粘贴数据库文件夹到数据文件夹在MySQL中,即如果你有一个数据库调用alto,然后find文件夹alto在您的MySQL – >数据文件夹在您的备份,并复制整个alto文件夹,并通过它到新安装的MySQL – >数据文件夹,重新启动MySQL,这工作完美。

开始之前,应该停止WAMP服务,或者至less在提示启动服务时重新启动服务。

在旧服务器实例上,默认情况下导航到MySQL数据文件夹,应该看起来类似于C:\wamp\bin\mysql\mysql5.1.53\data\ ,其中mysql5.1.53将是以前安装的MySQL数据库的版本号。

在这个文件夹里你应该看到几个文件和文件夹。 这些文件夹是实际的MySQL数据库,并包含我们需要的一堆.frm文件。 您应该将文件夹名称识别为数据库名称。 这些文件夹及其所有内容都可以直接拷贝到你的MySQL数据文件夹中,可以忽略默认的数据库mysql,performance_schema,test。

如果现在启动服务器,将会看到数据库被拾取,但是数据库将不包含被复制的表中的任何一个。 为了获取数据库的内容,在数据文件夹中应该看到一个文件ibdata1 ,这是表的数据文件,将其直接复制到数据文件夹中,您应该已经在新文件中有一个文件数据文件夹名为“ibdata1”,因此您可能希望将其重命名为ibdata1.bak然后从旧的MySQL数据文件夹复制ibdata1

一旦完成,重新启动所有的WAMP服务。 您可以使用PhpMyAdmin来检查您的数据库是否已成功恢复。

复制所有文件,并replace到/ var / lib / mysql,之后,你必须改变文件的所有者到mysql 这是如此重要,如果mariadb.service重启已经faild

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

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

创build一个同名的新数据库将.frm .ibd文件复制到xampp / mysql / data / [databasename] /

你将需要ibdata文件,以及在里面find

xampp / mysql / data /将以前的ibdata1文件粘贴到粘贴文件中,并将其replace为现有的ibdata文件

[ 注意:您可能会丢失在新的ibdata文件中新创build的数据库的内容 ]