Error number: MY-010394; Symbol: ER_NDB_SLAVE_SAW_ALREADY_COMMITTED_EPOCH; SQLSTATE: HY000
Message: NDB Slave : SQL thread stopped as attempted to reapply already committed epoch %llu/%llu (%llu) from server id %u. Group Master Log : %s Group Master Log Pos : %llu.
错误 MY-010394 ( ER_NDB_SLAVE_SAW_ALREADY_COMMITTED_EPOCH )指明,MySQL在NDB库中读取一个已经提交的epoch值,而Epoch值是MySQL在用于表示事务状态的标识符。当NDB因素出现故障时,此错误可能会发生,这表示回滚操作无法在NDB层执行(出现这个错误后)。
一般情况下,当MySQL在NDB库时尝试读取一个已经提交的epoch值,但却没有发现这个值的时候就会产生这个错误。当MySQL与NDB之间的通道受到影响时,也可能会发生此错误。此外,在NDB中有一个事务句柄,不断生成Epoch值,而另一个线程不断选择Epoch值,这可能会导致已提交Epoch值丢失,也会引起这个错误。
一般来说,MySQL试图从NBD引擎提取信息的过程受阻,就可能引发这个错误。在这类场景下,可以采取以下步骤来尝试解决这个错误:
1. 确认网络连接正常。MySQL应用程序可以与NBD引擎交换信息而不受阻碍,因此确定网络连接正常有助于调试此错误。
2. 尝试重新启动MySQL应用程序,以便更新存储在内存中的epoch值。
3. 仔细检查NBD引擎在处理数据任务时所产生的日志。建议可以尝试比较日志中的匹配项,试图寻找导致错误的根源。
4. 尝试重新启动NBD引擎,以便彻底清除掉所有存在的epoch值。
5. 如果无法解决,可以尝试将MySQL升级到最新版本,或尝试降级为之前的版本,以便查看是否有更好的结果。
此外,由于在NDB中部署的性能窑可能改变,因此可以尝试重新配置NDB以获得更好的性能。
因此,面对ER_NDB_SLAVE_SAW_ALREADY_COMMITTED_EPOCH错误,以上是一些常见的解决办法。