mysql回收innodb 表空间

5.1版本,无论似乎truncate table 还是delete from ,都能删掉数据,但是表空间还是不会变,analyze table 还是optimize table都不行。。

最终解决方案是alter table xx engine=innodb

 但是上面的只试用与 每个table一个idb 文件的那个配置。现实情况中遇到,原先用的是共享tablespace ,后来突然配了个per table ,这就受不了了,有些表是在共享表空间里面的,有些是独立的。。这给后面埋下了一颗定时炸弹。就算用 alter table engine=innodb也回收不了空间。后来干脆把ibdata1 给删了,完了把备份导入。启动。ok 。。但是过段时间,mysql报错,show engines ,里面没有innodb这个引擎了。。原来是删ibdata1时候没有把ib_logfile*给一起干掉。那样会造成innodb的奔溃。这时候删掉重启mysql,没有用,不得不把ibdata1再删一次,库也删了,重启导一遍数据。start。ok。

原文地址:https://www.cnblogs.com/gqdw/p/2963833.html