如何从一个.ibd文件重新创建MySQL InnoDB表?

23
假设以下MySQL文件已从备份磁带中恢复:
  • tablename.frm
  • tablename.ibd
此外,假设MySQL安装是在innodb_file_per_table模式下运行,并且使用mysqladmin shutdown进行了干净关闭。
给定与恢复的MySQL文件相同版本的新安装的情况下,如何将数据从tablename.ibd/tablename.frm导入到这个新安装中?

我不确定是否可能,因为即使InnoDB对每个表使用单独的文件,仍然存在一些垃圾数据在中央的idbdata文件中,该文件与现有的表相连。 - Omry Yadan
Omry:从技术上讲,据我所知应该是可能的。请随意证明我错了 :-) - knorv
3
这不属于这里,与编程无关。请到DBA Exchange去。那里已经有几个类似的问题...http://dba.stackexchange.com/questions/16875/mysql-how-to-restore-table-stored-in-a-frm-and-a-ibd-file - Cylindric
这个问题似乎不适合讨论,因为它涉及到数据库管理,应该在DBA上讨论,并且是http://dba.stackexchange.com/questions/16875/mysql-how-to-restore-table-stored-in-a-frm-and-a-ibd-file的直接副本。 - Cylindric
一个答案建议这个资源,所以我会把它添加在这里作为参考,并将答案报告为仅链接。 - halfer
4个回答

3

这里有一个类似的问题得到了回答,请看一下https://dev59.com/5Ggu5IYBdhLWcg3w_L3J#10943833

是的,这是可能的。仅仅将 .frm 文件复制到数据库文件夹中是不够的,您还需要将 ib_logfiles 和 ibdata 文件复制到数据文件夹中。我刚刚复制了 .frm 文件并复制了那些文件,然后重新启动服务器,我的数据库就恢复了。


0

0

当你丢失了ib_logfilesibdata文件,只剩下.frm.idb文件时,我发布了正确的解决方案。

请查看我在此链接上的评论:

从frm和ibd文件恢复表结构

这对你也适用。

谢谢。


-1

这种方法可能并不适用于所有情况。 但是在某些情况下确实有效...

首先停止使用的wamp或xampp相关服务。

然后复制并粘贴tablename.frm,tablename.ibd

文件到mysql/data/DATABASE NAME FOLDER下。 然后重新启动所有服务。该表将在该数据库下创建。


你只能使用MyISAM表类型(tablename.frm tablename.MYD tablename.MYI)来实现这一点。InnoDB只会显示表名而没有内容。InnoDB表类型是安全复杂的。帮助链接:https://dev59.com/aG025IYBdhLWcg3w4aCu - Timothy Nwanwene

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接