MySQLのinnodb_log_file_sizeを変更したらMySQLが起動しなくなった
MySQLのチューニングなお話。
/etc/my.cnfに
innodb_log_file_size=
というパラメータがあります。
ログのサイズなんやろ?別に大きくなくてもいいんじゃね????と思いましたが、InnoDBのログはただのログにあらず。
InnoDBのログは所謂WALログです。
ユーザのinsert 操作
↓
Innodb_logに一旦書き込み
↓
コミット
↓
落ち着いたらDBに書き込み
という流れ。
なのでInnoDBログを安易に消すと、書き込む予定のデータがなくなりますし、このサイズが小さいと一時スペースが小さいのと同じでパフォーマンスが悪くなります。
というわけで大きめににしよう、というのがチューニング。(大きくなりすぎてもリカバリに時間かかるんでアレなので兼ね合い)
デフォルトは5MBぽっちなので128MBとかにしようと考えます。
そこで
innodb_log_file_size=128MB
と書いてから
sudo service mysqld restart
などとすると起動が失敗します。
悲しいですね。
環境によっては起動するけどmysql使えなくなったり。
手順があります。
まず、DBに書き込む前に一息ついてるファイルがあるかもしれないので安全にシャットダウンできるようにします。
mysqlを起動してコンソールに入った状態で
mysql> SET GLOBAL innodb_fast_shutdown=0;
と設定してシャットなダウン。
$sudo service mysqld stop
からのログファイル退避
mv /var/lib/mysql/ib_logfile* /tmp
からのmy.cnf編集からの
起動
$sudo service mysqld start
ってな感じです。
エラーログ見てもよくわからんので凄い苦労しました。