MySQL をアップグレード(またはダウングレード)を行った際、my.cnf の「innodb_log_file_size」と実際の「ib_logfile0, ib_logfile1」のファイルサイズが異なると、MySQLがエラーとなり起動できなくなります。その場合の対処です。(2014/09/20作成)
ColossusCloud / Pixabay
「innodb_log_file_size」とは…
InnoDBの更新ログを記録するディスク上のファイルです。
大きくした方がパフォーマンスが向上します。なぜなら、innodb_log_fileがいっぱいになると、メモリ上のinnodb_buffer_poolの中の更新された部分のデータを、ディスク上のInnoDBのデータファイルに書き出すしくみになっているからです。ですので、innodb_buffer_pool_sizeを大きくしたら、innodb_log_file_sizeもあわせて調整しないとパフォーマンスが向上しません。(参考文献:DSAS)
0.環境情報
$ mysql --version mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1
1.エラーログ
(抜粋) 140920 0:20:25 InnoDB: Initializing buffer pool, size = 256.0M 140920 0:20:25 InnoDB: Completed initialization of buffer pool InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes InnoDB: than specified in the .cnf file 0 268435456 bytes! 140920 0:20:25 [ERROR] Plugin 'InnoDB' init function returned error. 140920 0:20:25 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. …
2.設定変更
$ sudo /etc/init.d/mysqld stop $ pwd /var/lib/mysql $ sudo mv ib_logfile0 __ib_logfile0 $ sudo mv ib_logfile1 __ib_logfile1 $ sudo vi /etc/my.cnf innodb_log_file_size = 任意のサイズをMBで指定 $ sudo /etc/init.d/mysqld start
※logfile0, logfile1 をリネーム後 MySQL起動すると、ログファイルは自動的に再作成されます。
以上