本番MySQL環境では、次のエラーメッセージが4分ごとに/var/log/mysql/error.log
に書き込まれます。
110723 18:36:02 InnoDB: ERROR: the age of the last checkpoint is 9433856,
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.
エラーメッセージの解析方法がわかりません。
より具体的には、チェックポイントの経過時間が「ロググループの容量」にどのように関係しているのか、そしてBLOB
/TEXT
列が大きい行のサイズにどのように関係しているのかがわかりません。
基本的に、この問題のトラブルシューティングと修正の進め方が分からなくなっています。私の質問は:
エラーメッセージは、InnoDBに挿入するデータが多すぎると、データをメインデータファイルにフラッシュする前にInnoDBログがいっぱいになることを意味します。
これを解決するには、MySQLを完全に停止し(非常に重要)、既存のInnoDBログファイル(おそらく、移動していない限り、MySQLデータディレクトリのlb_logfile*
)を削除してから、innodb_log_file_size
を調整する必要があります。ニーズに合わせて、MySQLを再起動します。 MySQLパフォーマンスブログからのこの記事 は有益かもしれません。