Error number: MY-011930; Symbol: ER_IB_MSG_105; SQLSTATE: HY000
Message: %s
错误说明:
MY-011930,即ER_IB_MSG_105,指的是MySQL错误代码,对应的是SQLSTATE HY000状态码。这一错误提示表明,在使用InnoDB存储引擎时出现了数据库集群中某些事务读取错误。它表明在集群中某些事务中出错,使得InnoDB存储引擎无法从其它事务中读取数据。此时MySQL服务器将把请求发送给InnoDB内部维护者,而这个错误号是维护者对于事务重试请求的返回码。
此错误经常出现在MySQL集群中,尤其是多实例节点的环境中。当某一实例尝试从另一实例中获取数据时,前提是事务必须被正确处理,而且读取的数据一致性得到保证。由于集群中包括多实例,所以很容易出现数据处理上的冲突。由于InnoDB存储引擎对事务有严格的要求,因此它在处理事务读取错误的时候,出现了此类错误。
解决方法:
当遇到此错误时,必须开启InnoDB重做日志来查看详细信息,并获知具体何处出错。可以通过使用下面的命令开启InnoDB重试日志:
SET GLOBAL innodb_max_dirty_pages_pct=0;
SET GLOBAL innodb_log_wait_for_flush_spin_hwm=0;
SET GLOBAL innodb_log_wait_for_flush=1;
此外,还可以考虑工作负载调整,检查原有事务处理器情况,以便确保集群中数据读取准确性,以及做好集群维护工作,防止出现类似错误。另外,还需要对每个数据库实例进行故障排除,确认此类错误是原因就在哪里,并注意处理事务,确保在集群中传输数据的完整性。