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

时间:2011-05-12 20:05:57

标签: mysql drop-database

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

1 个答案:

答案 0 :(得分:22)

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

  

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

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

  2.   
  3. 停止服务器。

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

  6.   
  7. 删除InnoDB表的所有.frm文件。

  8.   
  9. 配置新的表空间。

  10.   
  11. 重启服务器。

  12.   
  13. 导入转储文件。

  14.   

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