MySQL:InnoDB:ERROR:最后一个检查点的年龄是X,超过了日志组容量Y?

kno*_*orv 10 mysql innodb

在生产 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.
Run Code Online (Sandbox Code Playgroud)

我不确定如何解析错误消息。

更具体地说,我不明白检查点的年龄如何与“日志组容量”相关,以及这又如何与具有大BLOB/TEXT列的行的大小相关。

基本上我不知道如何排除故障并继续解决这个问题。我的问题是:

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

wom*_*ble 11

该错误消息意味着您试图过快地将过多数据插入 InnoDB,并且 InnoDB 日志在数据可以刷新到主数据文件之前已填满。

要解决它,您需要干净地停止 MySQL(非常重要),删除现有的 InnoDB 日志文件(可能lb_logfile*在您的 MySQL 数据目录中,除非您已移动它们),然后调整innodb_log_file_size以适合您的需要,然后再次启动 MySQL . 这篇来自 MySQL 性能博客的文章可能会有所启发。

  • 不,这实际上不是玩笑,而是一个真正的问题。服务器会崩溃吗?数据会丢失吗?性能会下降吗?上述所有的? (6认同)
  • 是的,当日志填满时,数据库服务器将有效地挂起对 InnoDB 表的任何更新。它可以削弱一个网站。 (4认同)