删除Magento MySQL数据库后回收磁盘空间

我需要回收一些磁盘空间,所以我从我的服务器上删除了旧的Magento数据库。 数据库大小约为16 GB。 我很惊讶,一旦数据库被删除,它并没有真正释放该磁盘空间。

我试过重新启动MySQL服务器,但仍然占用这个空间。

如果重要的话,一个Magento数据库使用innoDB相当厉害。

有什么我可以做得到这个磁盘空间回来?

我在StackOverflow中为InnoDB写了一个CleanUp过程

https://stackoverflow.com/a/4056261/491757(2010年 10月29日)

这里是

要一劳永逸地收缩ibdata1,您必须执行以下操作:

1)将所有数据库转储到一个SQL文本文件(称为SQLData.sql)

2)删除所有数据库(mysql模式除外)

3)closuresmysql

4)将以下行添加到/etc/my.cnf

[mysqld] innodb_file_per_table innodb_flush_method=O_DIRECT innodb_log_file_size=1G innodb_buffer_pool_size=4G 

旁注:不pipe你为innodb_buffer_pool_size设置了什么,确保innodb_log_file_size是innodb_buffer_pool_size的25%。

5)删除ibdata1,ib_logfile0和ib_logfile1

此时,只应在/ var / lib / mysql中有mysql模式

6)重新启动MySQL

这将以10MB重新创buildibdata1,ib_logfile0和ib_logfile1每个1G

7)将SQLData.sql重新加载到MySQL中

ibdata1将会增长,但只包含表元数据

每个InnoDB表将在ibdata1外部存在

假设你有一个名为mydb.mytable的InnoDB表。 如果你进入/ var / lib / mysql / mydb,你会看到两个表示表的文件

  • mytable.frm(存储引擎头)
  • mytable.ibd(mydb.mytable的表数据和表索引的主页)

ibdata1将永远不会包含InnoDB数据和索引。

使用/etc/my.cnf中的innodb_file_per_table选项,可以运行OPTIMIZE TABLE mydb.mytable,文件/var/lib/mysql/mydb/mytable.ibd将实际缩小。

在我的职业生涯中,我曾经多次做过MySQL DBA

事实上,我第一次这样做,我把一个50GB的ibdata1文件压缩成了500MB。

试一试。 如果您还有其他问题,请给我发电子邮件。 相信我。 这将在短期内和长期的工作。 !

目前,回收丢失的InnoDB数据库使用的空间的唯一方法是转储所有数据库,停止MySQL,删除底层存储文件,重新启动MySQL,最后导入数据库转储。

MySQL文档有关于此的更多信息 。