mysql:如何释放空间(innodb)

mysql:如何释放空间(innodb),mysql,Mysql,我有一个配置了innoDB存储引擎的mysql数据库。 我删除了数据库(删除数据库) 但是磁盘空间还没有释放出来 在/var/lib/mysql中有一些称为ib_logfile0、ib_logfile1和ibdata1的“大”文件,其中最后一个文件非常大。我认为这些文件实际上是原始数据库 我怎么知道我是否可以删除它们。或者一个更好的问题是如何放弃 数据库,以便回收磁盘空间 澄清 我想删除整个数据库并释放磁盘空间。 我不想执行任何恢复 提前感谢。一种解决方案是转储然后恢复。不幸的是,一旦分配了空间

我有一个配置了innoDB存储引擎的mysql数据库。 我删除了数据库(
删除数据库
) 但是磁盘空间还没有释放出来

/var/lib/mysql
中有一些称为
ib_logfile0
ib_logfile1
ibdata1
的“大”文件,其中最后一个文件非常大。我认为这些文件实际上是原始数据库

我怎么知道我是否可以删除它们。或者一个更好的问题是如何放弃 数据库,以便回收磁盘空间

澄清
我想删除整个数据库并释放磁盘空间。 我不想执行任何恢复


提前感谢。

一种解决方案是转储然后恢复。

不幸的是,一旦分配了空间,就无法缩小这些文件。然而,当添加新数据时,MySQL将重新使用空间,但文件不会收缩

要缩小大小,您需要转储数据库,然后再次恢复它们

您还可以执行以下操作:


在配置文件中设置innodb_file_per_table,这将为每个表创建一个单独的文件。这将允许您在删除数据库后删除这些文件,还允许您在收缩特定表中的数据时使用“优化表”命令重新生成ibd文件。

这是serverfault的问题。谢谢您的回答。顺便问一下,每个表(如果有)创建一个单独的文件有哪些缺点?我会降低性能吗?我想不出使用innodb_file_per_table选项有什么缺点,只是它会创建更多的文件,这可能会使管理这些文件稍微困难一些。但是,使用该选项肯定有一些好处,例如碎片更少,能够收缩单个表文件,如果文件系统有2GB的限制(现在非常罕见),那么该限制现在适用于每个表,而不是整个表。