2009-05-27 14 views
5

私はinnoDBストレージエンジンで設定されたmysql DBを持っています。 データベース(drop database <dbname>) を削除しましたが、ディスク領域が開放されていません。 /var/lib/mysqlmysql:空き領域(innodb)

ib_logfile0ib_logfile1と最後のものは本当に大きいですibdata1と呼ばれるいくつかの「大きな」ファイルがあります。私は、これらのファイルが実際に元のDBであることを押しています。

どうすれば削除できるかわかります。または、より良い質問は、ディスク容量が再利用されるように データベースを削除する方法です。

明確化
完全なデータベースを削除し、ディスク領域を解放します。 復元を実行したくありません。

ありがとうございます。

+0

これはserverfault.comの質問 – soulmerge

答えて

7

残念ながら、スペースが割り当てられたら、これらのファイルを縮小する方法はありません。しかし、新しいデータが追加されると、MySQLはスペースを再利用しますが、ファイルは縮小されません。

サイズを縮小するには、データベースをダンプしてから再度復元する必要があります。また、次の操作を行うことができ

は:

テーブルごとに個別のファイルが作成されますされ、configファイルでinnodb_file_per_tableを設定します。これにより、データベースが削除された後にこれらのファイルを削除することができます。また、特定のテーブルのデータを縮小する場合は、OPTIMIZE TABLEコマンドを使用してibdファイルを再構築できます。

+0

お返事ありがとうございます。ところで、これはテーブルごとに1つの別々のファイルを作成するという欠点です(もしあれば)?私はパフォーマンスを失うか? – Luixv

+0

innodb_file_per_tableオプションを私の頭の上から外すことには欠点があるとは思えません。もっと多くのファイルを作成して、それらの管理を少し難しくするかもしれません。 このオプションを使用すると、断片化が少なく、個々のテーブルファイルを縮小することができますが、2GBの制限があるファイルシステム(最近は非常にまれです)の代わりに、テーブル単位で制限が適用されます全部に –

+0

お返事ありがとうございます。私はあなたに '受け入れられた' – Luixv

0

1つの解決策は、ダンプして復元することです。

関連する問題