Hatena::ブログ(Diary)

koziyの日記 RSSフィード

2007-09-11

[MySQL][InnoDB] innodb_log_file_size 変更手順

毎度毎度毎度はげしくど忘れするのでメモ。

手順は InnoDBを使うときのパフォーマンスチューニング - フツーな日常 で書かれてますね。

innodb_log_file_sizeを増やす

innodb_log_file_size=512Mに

ちょっとコツがいる操作が必要。

* 一度mysqlをshutdownする

* innodbのログを別の場所に退避させる

* innodb_log_file_sizeの値を変える

* 再度mysqldを上げ直す。ログは無ければ勝手に作られる。

InnoDB のログは ib_logfile\d+ (デフォルトだと ib_logfile(0|1) の 2 ファイル) なのでこれを /tmp にでも mv しちゃうと。

で、なんでこんなめんどーなことが必要なのかというと no title で書かれている

既にトランザクションログが存在していて,innodb_log_file_sizeの設定値の方が大きい場合,サイズアンマッチでInnoDBが起動しないので注意が必要だ。

ということでした。

ちなみに、稼働中の innodb_log_file_size の設定値より小さい値にした場合は

  • ログは退避しなくても mysqld を上げ直せる
  • ログの大きさは設定前の状態のまま
  • SHOW VARIABLES LIKE 'innodb%'; でみると設定後の値になっている
  • 実際に InnoDB のテーブルを SELECT してみると ERROR 1033 (HY000): Incorrect information in file: なエラーになる
  • ので、小さい値にする場合もログを退避して mysqld を上げ直す必要あり

でした。まる。

追記その 1

http://d.hatena.ne.jp/urekat/20090423/1240473193 でツッコミいただいた

SET GLOBAL innodb_fast_shutdown=0;

してから mysqld shutdown した方が確かにより確実ですね(もちろん、その後 エラーログに Shutdown completed してエラーがないことを確認してあげましょう)。

柴田柴田 2007/10/02 17:23 ERROR 1033 (HY000): Incorrect information 状態に陥って右往左往してたところこのページがみつかり、原因がわかり助かりました。
このエラーが出た場合、元のsizeで起動すると、ちゃんとinnodbも読めるみたいですね。私の場合設定してなかったのでデフォルトの5MBに設定したら読めました。DUMPしてなかったので焦った^^;

koziykoziy 2007/10/02 18:04 そうですねー。生成されたログのサイズと同じ設定にして再起動すれば立ち上がりますねー。
本番稼動してしまった後にログサイズを変更したい場合はメンテナンス時間さえもらえば変更可能なので、そのポイントさえ覚えておけば恐くないですねー:)

太郎太郎 2007/12/20 14:00 私も柴田さん同様inncorrect information in file と表示され、焦りまくっていたので(設定変更→リストア→設定変更→リストアの無限ループ)本当助かりました!

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

Connection: close