web-dev-qa-db-ja.com

MySQLでデータベースを削除した後、ディスク領域を再利用する

私はいくつかの非常に大きなデータベースを作成したので、いくつか削除しました。ディスクスペースが思ったほど回復していないことに気づきました。たとえば、最後に追加したデータベースが実際に空き領域をすべて使い果たしてしまったため、そのスキーマを削除しました。これまでは12.4 GBの空き容量がありましたが、現在は7.52 GBしか空き容量がありません。
何が起きてる? 〜5 GBを戻すにはどうすればよいですか?

23
VenerableAgents

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は、データファイル自体の中にファイルシステム(「テーブルスペース」)を作成します。ファイル内のデータの再編成にはコストがかかる可能性があるため、データが削除されたときにデータファイルが「縮小」されることはありません(削除されたデータが最後にあるか、連続しているという保証はありません)。上記のようにデータベースを再作成することにより、ファイルはすべてのデータに対して必要な大きさになりますが、それより大きくなることはありません。

22
Chris Morgan