在mysql中删除数据库后回收磁盘空间

Ven*_*nts 22 mysql drop-database

我已经创建了一些非常大的数据库,并且已经删除了一些.我注意到我的磁盘空间没有像我预期的那样恢复.例如,我添加的最后一个数据库实际上耗尽了我所有的可用空间并中止了,所以我删除了该模式.在此之前,我有12.4 GB免费,现在我只有7.52 GB免费.
这里发生了什么?我如何获得~5 GB的回报?

Chr*_*gan 22

来自http://dev.mysql.com/doc/refman/5.1/en/innodb-data-log-reconfiguration.html:

目前,您无法从表空间中删除数据文件.要减小表空间的大小,请使用以下过程:

  1. 使用mysqldump转储所有InnoDB表.

  2. 停止服务器.

  3. 删除所有现有的表空间文件,包括ibdata和ib_log文件.如果要保留信息的备份副本,请在删除MySQL安装中的文件之前将所有ib*文件复制到另一个位置.

  4. 删除InnoDB表的任何.frm文件.

  5. 配置新的表空间.

  6. 重启服务器.

  7. 导入转储文件.

Innodb在数据文件本身内创建一个文件系统("表空间").它在删除数据时从不"缩小"数据文件,因为文件中数据的重组可能成本很高(不能保证删除的数据最后,甚至是连续的).通过如上所述重新创建数据库,它使文件尽可能大到所有数据,但不大.

  • 相同的答案的一个更有用的版本:http://stackoverflow.com/questions/3456159/how-to-shrink-purge-ibdata1-file-in-mysql/3456885#3456885 (6认同)