InnoDB 数据库如何恢复

2015-05-26 16:57:29 +08:00
 xfack

因自己本想格式化自己数据库,无奈格错了朋友的数据库,还好朋友数据他有备份,但是备份文件里只有.frm和.ibd的文件,还有一个opt的文件.上网查了下,idb后缀的文件是innodb的,故请教怎么恢复innodb的数据文件,里面的不知道有什么字段,因为不是自己设计的表,

也百度过,都说用percona data recover tool这个工具,但是没有成功,

win下不知道有没有工具?

2651 次点击
所在节点    问与答
11 条回复
lyragosa
2015-05-26 17:07:17 +08:00
innodb如果只有“数据库文件”的备份,估计有点麻烦。

innodb因为其特殊的格式,使得完美备份方法只有
- mysqldump 不用说
- binlog回滚
- 主从

单纯备份/var/mysql 下的文件会作死……我就作死过一次……
billlee
2015-05-26 17:20:27 +08:00
有 idb 和 frm 应该就可以了,<表名>.idb 是表数据,<表名>.frm 是表结构,db.opt 是数据库级别的一些额外的选项(比如默认字符集)
恢复后把这些文件放回 /var/lib/mysql/<数据库名>/ 下面应该就可以了。
xfack
2015-05-26 17:56:25 +08:00
@lyragosa 还真的只是备份了mysql里的data文件,其他都没有了...
xfack
2015-05-26 17:58:27 +08:00
@billlee 这个办法试过了,数据库和表名是出现了,可是用navicat premium点击打开报错

报错:

1033 - Incorrect information in file '.\web\user.frm'
billlee
2015-05-26 18:03:58 +08:00
@xfack 如果能记得数据表结构,可以试试创建一个同样结构的表,然后关闭 mysql 服务器,用备份的 idb 替换掉新的 idb 文件。
xfack
2015-05-26 18:11:53 +08:00
@billlee 不记得表结构了,用mysql命令进行查看的时候,也是报刚才1033的错误.
lyragosa
2015-05-26 18:37:41 +08:00
@billlee 可能某些时候可以……但关键时候就会坑你了。
我曾经试过直接把mysql下的data通盘拷贝到一台其他机器,结果所有innodb表直接挂掉
所以最佳的备份办法永远是mysqldump 直接文本格式肯定没问题
billlee
2015-05-26 20:58:59 +08:00
@lyragosa mysqldump 的备份肯定是好的,但是现在楼主并没有这个备份。
xfack
2015-05-27 09:20:47 +08:00
@lyragosa T . T 我也想直接文本格式,有文本格式我就不用担心了,最起码能打开,现在是没有这文本格式.
julyclyde
2015-05-27 15:23:31 +08:00
@billlee 还有innodb log呢
xfack
2015-05-28 13:12:37 +08:00
@julyclyde 也没有...只有.frm和.idb

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/193878

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX