我的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表?
答案 0 :(得分:6)
InnoDB没有这三个文件
InnoDB数据存储在所有数据库和表的“ibdata1”中。 表定义存储在“tablename.frm”
中我会说您的InnoDB文件已损坏,您可能需要查看这些工具: https://launchpad.net/percona-innodb-recovery-tool
答案 1 :(得分:1)
已更新
首先,关于文件:
要恢复表,您可以尝试(先备份):
1)运行check table tablename
- 对于所有数据库表;
2)运行repair table tablename
- 用于必要的表格。
再次更新
另一个想法......试试这个:
我期待正确的表格(当然没有数据)。对不起,现在我没有PC检查,然后建议......
答案 2 :(得分:1)
但您可以将表格类型更改为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运行更长时间而不必强制将日志中记录的更改应用于日志。磁盘上的表空间。