不寻常的mysql frm和idb文件

时间:2013-07-31 22:36:12

标签: mysql

我启用了innodb_file_per_table选项,因此每个表都有一个.frm和一个.ibd文件。有些不寻常的是,有些文件似乎来自文件系统上的临时表:

/db/mysql$ ls
<snip>
 #sql2-25fe-5.frm
 #sql2-25fe-5.ibd
 #sql2-55f4-73.frm
 #sql2-55f4-73.ibd
 #sql-55f6_13b626.ibd
 #sql-6abe_e3.ibd
</snip>

其中一个相当大,所以如果安全,我想摆脱它们。我尝试将它们像常规表和临时表一样丢弃,但它无论如何都无法正常工作。

drop table `#sql2-25fe-5`;
drop temporary table `#sql2-25fe-5`;

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:1)

要清除这一点:

倾倒并重新加载所有表,就像我想要的那样释放空间(innobackupex备份和恢复不起作用)。我相信这些永久临时表是mysql中已修复的两个错误之一的结果:

  

InnoDB:如果服务器在重建InnoDB表的聚簇索引的ALTER TABLE操作期间的某个精确时刻崩溃,则之后原始表可能无法访问。此类操作的一个示例是ALTER TABLE ... ADD PRIMARY KEY如果服务器在此操作期间暂停,则修复将保留原始表。您可能仍需要手动重命名.ibd文件以恢复原始表内容:在MySQL 5.6及更高版本中,从#sql-ib $ new_table_id.ibd重命名为数据库目录中的table_name.ibd;在MySQL 5.6之前,要重命名的临时文件是table_name#1或#2。 (Bug#14669848)

https://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-30.html

  

InnoDB:对于发生错误的UPDATE语句,可能无法关闭更新期间打开的临时文件。 (Bug#15978766)

https://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-32.html