MySQL:InnoDB:错误:最后一个检查点的寿命是X,超过了日志组的容量Y?


10

在生产MySQL环境中,以下错误消息/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列的行的大小如何相关。

基本上,我对如何进行故障排除并继续解决此问题一无所知。我的问题是:

  • 错误消息是什么意思?
  • 我究竟做错了什么?
  • 我该如何解决?

Answers:


11

该错误消息表示您试图过快地将太多数据插入InnoDB,并且InnoDB日志已填满,然后才能将数据刷新到主数据文件中。

要解决此问题,您需要彻底停止MySQL(非常重要),删除现有的InnoDB日志文件(可能lb_logfile*在您的MySQL数据目录中,除非您已移动它们),然后innodb_log_file_size根据需要进行调整,然后再次启动MySQL。 。 MySQL性能博客中的这篇文章可能很有启发性。


1
忽略错误消息会有什么后果?
马特·希利

1
你在开玩笑吧?您正在认真考虑忽略有关数据库存储的错误消息吗?该修复程序何时需要大约10秒钟的停机时间?
womble

6
不,这实际上不是在开玩笑,这是一个真正的问题。服务器会崩溃吗?数据会丢失吗?性能会下降吗?上述所有的?
马特·希利

1
womble,好答案!我已经解决了该问题,但是我对配置不正确时该错误产生的后果感到好奇。事实是,我看到了一些间歇性的减速,我很好奇这是否与该错误有关或是否有所不同。谢谢!
knorv 2011年

4
是的,当日志填满时,数据库服务器将有效地挂起以更新InnoDB表。它可以削弱站点。
womble
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.