MySQL Error number: MY-010512; Symbol: ER_NDB_CLUSTER_OOM_THD_NDB; SQLSTATE: HY000 报错 故障修复 远程处理

文档解释

Error number: MY-010512; Symbol: ER_NDB_CLUSTER_OOM_THD_NDB; SQLSTATE: HY000

Message: Could not allocate Thd_ndb object

错误说明

MY-010512(ER_NDB_CLUSTER_OOM_THD_NDB)是MySQL定义的一个错误。它表明MySQL在用于使用Ndb Cluster表时缺乏可用的资源。缺乏Ndb(Network Data Base)的资源的资源可能会终止交互式查询或其他操作,从而导致数据库连接或查询无法完成。

一般来说,MySQL的这个错误是由Ndb Cluster使用过程中由于内部内存使用而引起的。可以指定Ndb Cluster中需要使用到的内存大小,在这种情况下,如果所需的内存大于可用内存,则可能引发该错误。

常见案例

最常见的情况是,使用Ndb Cluster表的操作量过大,从而超出可用的Ndb Cluster内存限制。这些可能包括运行大量查询,开始大量事务,使用大量表空间,压缩/解压缩拷贝的数据,创建多个表或行的复杂查询,以及其他可能使用大量内存的操作。

另外,当游标(cursor)深度很高或复杂查询当中包含了联合查询或排序操作时,也可能会引发这一错误。在高负载的情况下缺乏内存可能会导致异常失败,导致MVCC中存在停滞,进而缩短事务执行时间。

解决方法

下面的步骤可帮助解决这一错误:

(1) 将内存设置提高到满足需求的大小。可以使用ndb_mgm -e show内存设置来查看Ndb Cluster中当前内存大小设置,以及适当的设置来满足当前要求。如果未使用ndb_mgm,可以使用SET GLOBAL命令来修改内存设置,当然也可以使用Ndb Cluster控制表(ndb_config)来调整内存设置 。

(2) 调整请求。在追查原因时,可以采取措施以降低内存负荷,如调整查询及游标深度,降低表的大小等。

(3) 调整MySQL的连接数。增加MySQL客户端的连接数可以减少对Ndb Cluster的单次请求量,从而将内存负荷减少到可控范围。

(4) 关闭表或行上的SBR(混合日志)。某些情况下,在不使用SBR时可以将负荷降低到合理水平。

总之,使用Ndb Cluster表时,当可用内存不足时会发生MY-010512(ERROR_NDB_CLUSTER_OOM_THD_NDB)错误,从而缩短交互式查询或其他操作的执行时间。通过调整内存设置,调整查询和游标,调整连接数以及关闭SBR等,可以有效地减轻负荷,从而降低这一信号的发生概率。


数据运维技术 » MySQL Error number: MY-010512; Symbol: ER_NDB_CLUSTER_OOM_THD_NDB; SQLSTATE: HY000 报错 故障修复 远程处理