来源:自学PHP网 时间:2015-04-16 10:51 作者: 阅读:次
[导读] author:skatetime:2014 09 28 Mysql如何删除以 sql-开头的临时表 现象:在重建索引后,发现Mysql服务器的磁盘空间快满了在用如下命令重建索引mysql alter table skatetab add unique inde...
author:skate Mysql如何删除以“#sql-”开头的临时表 现象:在重建索引后,发现Mysql服务器的磁盘空间快满了 在用如下命令重建索引 mysql> alter table skatetab add unique index(id, uid), drop primary key, add primary key(uid, id); 在重建索引的过程中,因为空间不足,导致Mysql server reboot,重启之后发现空间少了100G。于是查看是哪个目录占用了这100G,最后发现在数据目录里发现 删除的方法: 在alter table的过程中,如果Mysql突然crash了,就会在数据目录里存在一些中间表,这些中间表是以“#sql-”开头的临时表,在你的数据目录里会看到 mysql> drop table `#mysql50##sql-928_76f7`; 前缀”#mysql50#“是让Mysql忽略文件名的安全编码,这个前缀是在Mysql5.1引入的 因为我的数据目录里#sql-*.ibd 和 #sql-*.frm两个文件都存,所以直接drop就可以了,磁盘空间100多G也回收了,如下所示 mysql> drop table `#mysql50##sql-928_76f7`; 说明:如果在数据目录里只有#sql-*.ibd,而没有#sql-*.frm的话,就需要特殊处理 mysql> create database test 2.把新创建的临时表的.frm文件复制到欲删除的数据目录里,并修改和 ”#sql-*.ibd“一样的文件名 shell> cp test/tmp.frm #sql-928_76f7.frm 3.确认#sql-*.ibd 和 #sql-*.frm两个文件都存,然后直接drop,如下: 参考:http://dev.mysql.com/doc/refman/5.5/en/innodb-troubleshooting-datadict.html ------end------ |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com