主に IT 技術を整理するためにメモ的に書き溜めています。少しだけフリーソフトもあるよ。コメントを残すには、 facebook を使ってください。

innodb_log_file_size のサイズを変更するには

最終更新日 2010-01-01 22:35:43 (1年以上前の記事です)

新年の大掃除という事でサーバのログアラートを眺めていたら、
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 の値と実際のログファイルのサイズが異なると、
エラーにするらしい。ただし、そのファイルが存在しなかった場合は再作成してくれる。
ということで、以下が正しい手順。

  1. mysqld を停止
  2. innoDB のログファイルを別名で保存(通常は /var/lib/mysql/{ib_logfile0,ib_logfile1})
  3. my.cnf を変更して innodb_log_file_size を変更
  4. mysqld を起動

うまくいけばログファイルを再作成してくれます。

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 なんだね。

最終更新日 2010-01-01 22:35:43

コメント このエントリーをはてなブックマークに追加

フリーソフトウエア
EnjoiFLV
EnjoiPacket
EnjoiCrypto
ランキング
rank2, rank3, rank7, rank10, rank11
todo メモ
facebook 対応
ページ処理
RSS feed
検索機能
認証いる?
更新日表示
実はカテゴリ機能
多言語
実はユーザ機能
ソースその内公開
動作環境メモ
php-5.1.6 with PDO
SQLite-3.3
IE6
FireFox-1.5
RSS
非認証

検索
Google