象:在重建索引后,发现Mysqlserver的磁盘空间快满了 在用例如以下指令重建索引 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`;
mysql> create database test 2.把新创立的暂时表的.frm文件拷贝到欲删去的数据文件夹里。并改动和 ”#sql-*.ibd“相同的文件名称 shell> cp test/tmp.frm #sql-928_76f7.frm
3.承认#sql-*.ibd 和 #sql-*.frm两个文件都存,然后直接drop,例如以下: |