MySQL InnoDB表丢失,不计入数据库结构

时间:2011-06-03 07:21:55

标签: mysql innodb

我的MySQL表中存在一个严重的问题,一旦有InnoDB表,它们在使用中,现在以某种方式隐藏

查看此[pic] *已删除链接 - 标题中的表格数为79,实际计数为74。

这些表是IN USE

我最近没有备份我的数据库,所以这对我来说是生死游戏

我检查了我的VPS,我在/ etc / lib / mysql / db_name /.

找到了它们

编辑:

我搜索了互联网,我发现每个表都应该有3个与之相关的文件。

例如,表table_users具有:

 -- table_users.frm
 -- table_users.MYD
 -- table_users.MYI

对于那些隐藏表,只有.frm文件,而且表中的其他两个文件丢失了。

我应该将问题更改为:如何从.frm文件中恢复innodb表?

4 个答案:

答案 0 :(得分:6)

InnoDB没有这三个文件

InnoDB数据存储在所有数据库和表的“ibdata1”中。 表定义存储在“tablename.frm”

我会说您的InnoDB文件已损坏,您可能需要查看这些工具: https://launchpad.net/percona-innodb-recovery-tool

答案 1 :(得分:1)

已更新

首先,关于文件:

  • .frm - 表结构;
  • .myd - 表格数据;
  • .myi - indices。

要恢复表,您可以尝试(先备份):

1)运行check table tablename - 对于所有数据库表;
2)运行repair table tablename - 用于必要的表格。


再次更新

另一个想法......试试这个:

  1. 创建一个新数据库以恢复和创建与.frm文件同名的表(使用一个字段 - 仅创建新的.frm文件);
  2. 停止mysql服务并用你的文件替换创建的.frm文件;
  3. 启动mysql服务并检查。
  4. 我期待正确的表格(当然没有数据)。对不起,现在我没有PC检查,然后建议......

答案 2 :(得分:1)

实际上,我对丢失的两个文件也有同样的问题。后来我发现当表的类型是innodb时,数据库文件夹只有一个关联文件。

但您可以将表格类型更改为myisam以获取该表格的所有三个文件。

现在根据备份,您可以随时随地导出数据库:)

PHP很棒:)

答案 3 :(得分:1)

![innodb image] [1] INNODB SYSTEM TABLESPACE

  

INNODB系统表空间包含在mysql数据目录---

INNODB系统表空间分为 两部分

1> .FRM       它可以描述表格格式,或者你可以说它是表格* 定义 *

2 - ;的.ibd        它包含所有系统相关的文件,它还包含数据和索引,(InnoDB主表空间包含 - ibdata1 - 和重做日志 - ib_logfile *。) ibdata1包含您的InnoDB数据库,ib_logfile0和ib_logfile1是InnoDB的日志文件。

如果删除ibdata1文件,那么所有InnoDB表都将丢失。

默认情况下,InnDB使用共享的“表空间”,它是来自单个逻辑存储区域的一个或多个文件。所有InnoDB表都存储在tabespace中(来自所有数据库)。默认情况下,InnoDB在数据目录中创建两个5MB的日志文件:iblogfile0和iblogfile1。信息以循环方式记录,日志填满时日志前面的旧信息被覆盖。因此,更大的日志允许InnoDB运行更长时间而不必强制将日志中记录的更改应用于日志。磁盘上的表空间。