MySQL Error number: MY-013867; Symbol: ER_IB_MSG_LOG_WRITER_ENTERED_EXTRA_MARGIN; SQLSTATE: HY000 报错 故障修复 远程处理
文档解释
Error number: MY-013867; Symbol: ER_IB_MSG_LOG_WRITER_ENTERED_EXTRA_MARGIN; SQLSTATE: HY000
Message: Redo log is running out of free space, pausing user threads… Consider increasing innodb_redo_log_capacity.
错误说明:
ER_IB_MSG_LOG_WRITER_ENTERED_EXTRA_MARGIN 是MySQL中定义的一个错误,由于错误号(MY-013867)和SQLSTATE(HY000)唯一确定。它通常表明InnoDB日志缓冲器写入器包含多余的空档。这通常发生在InnoDB日志的循环中,即当一条消息结束时,它比较紧随在另一条消息之前 – 例如,当InnoDB关闭时,它会写入一系列消息,而 log_writer() 对于这些消息的最后一个可以获得额外的空档,从而产生该错误。
常见案例
当InnoDB关闭时,它会尝试根据所有日志缓冲区写入日志结尾,以便日志不受损坏或丢失,这样才能在重新启动时重新启动InnoDB。如果当InnoDB关闭时,log_writer()返回“Extra margin”,而它不能确保下次重新启动时能够安全地恢复回该逻辑,就会出现ER_IB_MSG_LOG_WRITER_ENTERED_EXTRA_MARGIN错误。
解决方法:
要解决这个问题,首先要确保任何InnoDB注释块更改的新版本本身是安全的,以后面的版本兼容,并且日志写入器没有溢出,冬季确保日志缓冲器写入器中的所有消息都是完成的。如果在检查给定的InnoDB日志文件的缓冲器时出现然而错误,可以尝试清除日志文件以修复MySQL,这通常可以解决 ER_IB_MSG_LOG_WRITER_ENTERED_EXTRA_MARGIN 的错误。一旦InnoDB日志文件已清除,则可以安全启动MySQL,并且不会再次出现此类错误。但是,日志文件的清除也可能会删除重要的最新数据,因此在执行此操作之前,应进行更多的测试。