Error number: MY-010859; Symbol: ER_BINLOG_CANT_CLEAR_IN_USE_FLAG_FOR_CRASHED_BINLOG; SQLSTATE: HY000
Message: Failed to clear LOG_EVENT_BINLOG_IN_USE_F for the crashed binlog file when source server is recovering it.
错误说明
MY-010859(ER_BINLOG_CANT_CLEAR_IN_USE_FLAG_FOR_CRASHED_BINLOG)的错误码及其SQL文本是“HY000”,表示事务执行错误。这种错误指的是在Recovery出现严重故障后,MySQL无法清除由IN_USE标签记录的事务日志的=标记。
常见案例
1. 在Recovery开始,MySQL会尝试查找已经指定的事务日志,而此时指定的日志被损坏了,结果出现此ER_BINLOG_CANT_CLEAR_IN_USE_FLAG_FOR_CRASHED_BINLOG错误;
2. 由于MySQL的事务日志被意外的清空,则此时后续的恢复操作就会失败,产生了MySQL这个错误;
3. 日志回滚失常,Recovery失败,产生了此错误;
4. 使用FLUSH LOGS指令清除了MySQL日志后,在操作结束前又执行了KILL命令或者系统挂载了,导致MySQL无法正常清除那些已经清除的日志,产生此错误;
5.搭建MySQL应用环境时,由于版本兼容性或者初次应用错误,使得日志无法清除,从而发生这个错误。
解决方法
ER_BINLOG_CANT_CLEAR_IN_USE_FLAG_FOR_CRASHED_BINLOG的发生是因为无法清除已挂载的MySQL日志,我们可以使用以下步骤来解决此问题:
步骤:
1. 首先,重新装载MySQL,使用”mysqld –skip-slave-start –skip-innodb –clear-all”登录MySQL;
2. 然后,执行命令”SET GLOBAL IN_USE=0″,强制将MySQL内部的IN_USE标志重置为0;
3. 将适当的日志保留在MySQL库中,然后再次执行正常的恢复操作;
4. 如果MySQL版本兼容性出现问题,也可以尝试升级MySQL,来解决此错误;
5. 确保MySQL应用环境中不会出现意外情况,以减少此类问题发生。