如何启用MySQL插件调试 解决NDB模块DBUG宏无输出问题
解决MySQL NDB模块DBUG调试宏无输出问题
问题根因
NDB是独立的集群存储引擎模块,拥有独立的调试控制逻辑,默认不会响应mysqld全局的--debug参数,同时可能存在编译阶段NDB调试开关未启用的问题。
解决步骤
- 第一步:确认NDB模块的调试编译开关已开启
即使是在debug编译目录下,也需要显式开启NDB的调试编译选项,完整编译参数需包含:
编译完成后可到编译目录下的cmake .. -DWITH_DEBUG=ON -DWITH_NDBCLUSTER=ON -DWITH_DEBUG_NDB=ONstorage/ndb目录中查看编译配置文件,确认存在#define DBUG_ON 1定义,确保DBUG宏不是空实现。 - 第二步:启动时增加NDB专属调试参数
全局的--debug参数仅控制MySQL Server层的调试输出,NDB模块的调试输出需要单独指定--ndb-debug参数,完整启动命令如下:
注意mysqld --debug='d:t:i:o,/data/mysql/mysqld.trace' --ndb-debug='d:t:i:O,/data/mysql/mysqld.trace'--ndb-debug参数中的O为大写,代表将NDB的调试日志追加到已有跟踪文件中,避免覆盖Server层的输出内容。 - 第三步:验证参数有效性
启动完成后执行ps aux | grep mysqld,确认运行中的mysqld进程确实携带了--ndb-debug参数,避免服务启动脚本过滤了自定义参数。 - 第四步:简化调试掩码验证输出
如果调整后仍然无输出,可以先使用极简调试掩码测试:
该配置仅输出NDB模块的函数调用记录,方便快速验证调试输出功能是否正常。mysqld --ndb-debug='d:f:o,/data/mysql/ndb_test.trace'
内容的提问来源于stack exchange,提问作者Professor
相关产品推荐
相关产品推荐

