新年の大掃除という事でサーバのログアラートを眺めていたら、
mysql から innoDB 関連の以下のようなエラーがみつかったので修正する事に。
100101 2:50:34 InnoDB: ERROR: the age of the last checkpoint is 9433664, InnoDB: which exceeds the log group capacity 9433498. InnoDB: If you are using big BLOB or TEXT rows, you must set the InnoDB: combined size of log files at least 10 times bigger than the InnoDB: largest such row.
エラー発生時間から大体何が起きたのか把握できたので、 innodb_log_file_size を増やす事に。
いつものように My.cnf を修正して再起動すれば良いだろうと思ってやったら、以下のようなエラーが。
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes InnoDB: than specified in the .cnf file 0 33554432 bytes!
どうやら、少し違ったらしい。
innoDB は my.cnf で指定された innodb_log_file_size の値と実際のログファイルのサイズが異なると、
エラーにするらしい。ただし、そのファイルが存在しなかった場合は再作成してくれる。
ということで、以下が正しい手順。
うまくいけばログファイルを再作成してくれます。
100101 03:59:53 mysqld started 100101 03:59:53 InnoDB: Log file ./ib_logfile0 did not exist: new to be created InnoDB: Setting log file ./ib_logfile0 size to 32 MB InnoDB: Database physically writes the file full: wait... 100101 03:59:53 InnoDB: Log file ./ib_logfile1 did not exist: new to be created InnoDB: Setting log file ./ib_logfile1 size to 32 MB InnoDB: Database physically writes the file full: wait...
どんな値を設定すべきかなどは色々他のサイトを見るといいと思います。
ちなみにデフォルトは 5M なんだね。