ふり返る暇なんて無いね

日々のメモ書きをつらつらと。メインブログに書くほどでもないことを流してます

innodb_log_file_sizeを気軽に変えると死ぬよ

mysqlデータディレクトリを丸っとコピーしてレプリカのコピーを作ってmysqlを再起動したら、エラーログに吐かれた内容。

InnoDB: Error: log file ./ib_logfile0 is of different size 0 1073741824 bytes
InnoDB: than specified in the .cnf file 0 134217728 bytes!
140612 12:35:27 [ERROR] Plugin 'InnoDB' init function returned error.
140612 12:35:27 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

元々のサーバに書かれていたmy.cnfと現在のmy.cnfが異なっているため、innodbが無効になって立ち上がった様子。このサーバは5.1系だけど、5.5系だとそもそも起動に失敗したはず(未確認)

対処方は簡単でinnodb_log_file_sizeを元のサーバと同じサイズにして、mysqlインスタンスを再起動してあげる。




どうしてもinnodb_log_file_sizeを変えたいときは、下記の手順を取ってあげれば良いはず。

シャットダウン時にinnodb logをフラッシュしてあげる

SET GLOBAL innodb_fast_shutdown=0;

mysqldを止める

/etc/init.d/mysql stop

dataディレクトリをバックアップ

cp -pr /var/lib/mysql /var/lib/mysql.backup.$(date +'%Y%m%d')

my.cnfのinnodb_log_file_sizeを変更する

innodb logを削除する

rm /var/lib/mysql/ib_logfile*

mysqldを再開

/etc/init.d/mysql start

ログを確認してエラーってないことを確認する。(エラーログの場所は設定次第)

lv /var/lib/mysql/$(hostname).err

innodb logが何者かってのは、昔メモ書いたはずなので、明日掘り起こす。