25

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

4

1 回答 1

23

来自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 在数据文件本身内创建一个文件系统(“表空间”)。当数据被删除时,它永远不会“缩小”数据文件,因为文件中数据的重组可能代价高昂(不能保证删除的数据在最后,甚至是连续的)。通过如上所述重新创建数据库,它使文件与所有数据所需的一样大,但不会更大。

于 2011-05-12T21:54:03.340 回答