/dev/null

(◞‸◟)

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

ってな感じです。

エラーログ見てもよくわからんので凄い苦労しました。