InnoDB: ERROR: the age of the last checkpoint
--InnoDB: ERROR: the age of the last checkpoint
-------------------------------------------------------2014/05/27
在批量更新数据的时候,mysqld.err中多次出现了:
130701 11:53:42 InnoDB: ERROR: the age of the last checkpoint is 2863227109,
InnoDB: which exceeds the log group capacity 566225511.
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
查看show engine innodb status \G
---
LOG
---
Log sequence number 35 1084195310
Log flushed up to 35 1082093330
Last checkpoint at 34 2875247845
0 pending log writes, 0 pending chkp writes
175831373 log i/o's done, 5.55 log i/o's/second
发现Log flushed up跟Last checkpoint 确实相差比较大,在redo log 中的capacity变量,代表最后的checkpoint不能超过这个阀值(Log flushed-Last checkpoint);若超过这个阀值则需将innodb buffer pool 中的脏数据写回到磁盘。
只是偶尔出现一次这类告警,不调整my.cnf参数也可以;若经常出现这类告警,可以将innodb_log_file_size参数调大。
innodb_log_file_size 参数的调整需重启数据库,对于生产线的数据库需选择好重启的时机,调整时如下操作:
1.停止mysql;
2.修改my.cnf中的innodb_log_file_size参数的大小;
3.将ib_logfile* 的文件移至其他目录(在正常关闭的情况下可以直接删除,最好还是移至其他目录,若mysql正常启动后再删除也不迟);
4.启动mysql,检查启动是否正常。