MySQLのibdata1が20GB超えたから小さくしてみた。

環境

Macbook Air 2011 Lion 10.7.5
MySQL 5.5.28

 バックアップ

mysqldump -u root -p データベース名 > kabuka.sql
6GBのファイルができた。
念のため、/usr/local/mysql-5.5.28-osx10.6-x86_64もバックアップした。
データは外付けHDDにコピーして作業した。

 削除

データベースを削除
mysql -u root -p
drop database データベース名;
quit

[システム環境設定]->[MySQL]でサーバーを停止

/usr/local/mysql-5.5.28-osx10.6-x86_64/dataの
ibdata1
ib_logfile0
ib_logfile1
を削除

設定

/etc/my.cnfの[mysqld]項目に
 innodb_data_file_path=ibdata1:1G
 innodb_file_per_table
を追加。自動で拡張する場合は、ibdata1:10M:autoextend にする。

my.cnfが無かったから、
/usr/local/mysql-5.5.28-osx10.6-x86_64/support-files/my-huge.cnf
をコピーした。

mysql-bin.000001ができないようにするには、
log-bin=mysql-bin
をコメントアウトする。

 リストア

 [システム環境設定]->[MySQL]でサーバーを起動

データベース作成
mysql -u root -p
CREATE DATABASE データベース名;
quit

復元
mysql -u root -D データベース名 -p < kabuka.sql

20GB->6GBに縮小 +ibdadaは1GB

圧縮

 my.cnfに
innodb_file_format = Barracuda
を追加 して再起動

ログインして、
ALTER TABLE テーブル名 ENGINE=InnoDB ROW_FORMAT=compressed KEY_BLOCK_SIZE=8;
を実行して変換する。 この処理は一度だけでいい。以後は、
ALTER TABLE テーブル名 ENGINE=InnoDB;
で最適化できる。

KEY_BLOCK_SIZEが、小さいと逆にファイルが大きくなった。
デフォルトが16なので、8にするとサイズが半分になる。
6GB->3GBに縮小した。 ibdada1は1GBで変化しなかった。

フォーマットの確認は
show table status;

 参考サイト

http://oshiire.to/archives/1684
http://blog.development-network.net/ung/2009/07/mysql-bin000001.html
http://d.hatena.ne.jp/omiyan/20110128/p1
http://d.hatena.ne.jp/sh2/20090628

yuki

初めての作業で調べた事、困った時の解決方法を記録するブログ。 主なテーマは、パソコン、プログラミング、カメラ、DTM、スピリチュアル、化学物質過敏症

コメントを投稿

Please Select Embedded Mode To Show The Comment System.*