これibdata1
は、MySQLの特に煩わしい機能ではありません。ibdata1
すべてのデータベースを削除し、ファイルを削除してダンプをリロードしない限り、ファイルを実際に縮小することはできません。
ただし、インデックスを含む各テーブルが個別のファイルとして保存されるようにMySQLを設定できます。そのようibdata1
にして、それほど大きくはなりません。Bill Karwinのコメントによると、これはMySQLのバージョン5.6.6以降、デフォルトで有効になっています。
少し前のことです。ただし、サーバーをセットアップしてテーブルごとに個別のファイルを使用my.cnf
するには、これを有効にするために変更する必要があります。
[mysqld]
innodb_file_per_table=1
http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html
スペースを取り戻したいので、ibdata1
実際にはファイルを削除する必要があります。
- やる
mysqldump
すべてのデータベース、プロシージャ、トリガなどの除くmysql
とperformance_schema
データベース
- 上記の2つのデータベースを除くすべてのデータベースを削除します
- mysqlを停止する
- 削除
ibdata1
とib_log
ファイル
- mysqlを起動
- ダンプから復元
手順5でMySQLを起動するibdata1
と、and ib_log
ファイルが再作成されます。
これで準備万端です。分析用に新しいデータベースを作成すると、テーブルはでibd*
はなく別のファイルに配置されますibdata1
。通常はすぐにデータベースをibd*
削除するので、ファイルは削除されます。
http://dev.mysql.com/doc/refman/5.1/en/drop-database.html
おそらくこれを見たことがあるでしょう:http :
//bugs.mysql.com/bug.php?id=1341
コマンドを使用するALTER TABLE <tablename> ENGINE=innodb
かOPTIMIZE TABLE <tablename>
、ibdata1からデータとインデックスページを抽出してファイルを分離できます。ただし、上記の手順を実行しない限り、ibdata1は縮小されません。
についてはinformation_schema
、ドロップする必要はありません。実際には、テーブルではなく、読み取り専用のビューの集まりにすぎません。そして、それらに関連付けられているファイルはなく、データベースディレクトリさえありません。informations_schema
メモリDBエンジンを使用しているとのmysqldの停止/再起動時に滴下して再生されます。https://dev.mysql.com/doc/refman/5.7/en/information-schema.htmlを参照してください。