2011年7月19日火曜日

MySQLのinnodb_log_file_sizeの変更方法

先日、MySQLのInnoDB関連のチューニングを行いました。

具体的には、
http://dsas.blog.klab.org/archives/50860867.html
などのURLを参考にして、

innodb_buffer_pool_size
innodb_log_file_size
thread_cache_size

を変更したのですが、うまく起動できませんでした。
(起動したように見えるが、実際はエラーが出てうまく動かない。)

原因は、innodb_log_file_size を変更した時に、古いlogファイルが残っていると、
サイズが違うため、以下のエラーが発生し、

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes

その後に、

Incorrect information in file XXX

といったメッセージが大量に出ていました。

これを防ぐためには、次の手順で innodb_log_file_size を変更します。

1.SET GLOBAL innodb_fast_shutdown=0; を実行
2.MySQLをshutdown。
3.my.cnfのinnodb_log_file_size を変更。
4.ログファイルを削除(デフォルトだと ib_logfile(0|1) の 2 ファイル)
5.MySQLのをstartup

参考にしたURL:
http://d.hatena.ne.jp/koziy/20070911/1189472682
http://dsas.blog.klab.org/archives/50860867.html
http://www.ibm.com/developerworks/jp/linux/library/l-tune-lamp-3.html