在使用OpenMetadata对OB数据库进行Lineage (血缘)提取时报错

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】版本号: 4.3.6-20250709105610
【问题描述】在使用OpenMetadata对OB数据库进行Lineage (血缘)提取时报错,找不到mysql.general_log表。请问是否可开启该表的功能,或者是否有替代的解决方案。

SELECT NULL
database_name,
argument query_text,
event_time start_time,
NULL end_time,
NULL duration,
NULL schema_name,
NULL query_type,
NULL user_name,
NULL aborted
FROM
mysql.general_log
WHERE
command_type = ‘Query’
AND event_time BETWEEN ‘2025-11-23 00:00:00’
AND ‘2025-11-25 00:00:00’
AND argument NOT LIKE ‘/* {“app”: “OpenMetadata”, %%} /%%’
AND argument NOT LIKE '/
{“app”: “dbt”, %%} */%%’
AND (
lower( argument ) LIKE ‘%%create%%table%%select%%’
OR lower( argument ) LIKE ‘%%insert%%into%%select%%’
OR lower( argument ) LIKE ‘%%update%%’
OR lower( argument ) LIKE ‘%%merge%%’
)
ORDER BY event_time DESC
LIMIT 1000;

【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

对于您在使用 OpenMetadata 对 OceanBase 数据库进行 Lineage 提取时遇到的找不到 mysql.general_log 表的错误,这可能是因为 OceanBase 并不像 MySQL 那样默认开启了这个表。mysql.general_log 表通常是用来记录所有 SQL 语句的执行情况的,包括查询、插入、更新等操作。在 OceanBase 中,类似的日志信息可以通过其他方式获取,例如通过 SQL Audit 功能或查询 gv$sql_audit 视图来获得 SQL 执行的历史记录。

开启 SQL 审计功能

如果您希望记录 SQL 语句的执行情况,可以尝试开启 OceanBase 的 SQL 审计功能。这里提供一个简要的操作步骤:

  1. 连接到 OceanBase:使用 oceanbase 用户或其他具有足够权限的用户登录到 OceanBase 系统。
  2. 设置审计级别:通过设置系统参数 ob_enable_sql_audit 来开启 SQL 审计功能。例如,可以执行以下 SQL 语句来开启:
    ALTER SYSTEM SET ob_enable_sql_audit = 1;
    
  3. 检查 SQL 审计状态:确保 SQL 审计已经开启,可以执行如下查询来验证:
    SHOW PARAMETERS LIKE 'ob_enable_sql_audit';
    

查询 SQL 审计日志

一旦 SQL 审计功能开启,您可以通过查询 gv$sql_audit 视图来获取 SQL 语句的执行记录。例如:

SELECT * FROM gv$sql_audit WHERE user_name = 'your_user_name';

使用 obdiag 工具

如果您希望通过 obdiag 工具来收集相关日志信息,可以考虑使用以下命令:

日志采集场景: SQL性能问题
日志采集命令: obdiag gather scene run --scene=observer.perf_sql --env “{db_connect=’-h127.0.0.1 -P2881 -utest@test -p****** -Dtest’, trace_id=‘Yxx’}”

这里,请将 -h127.0.0.1 -P2881 -utest@test -p****** -Dtest 替换为您实际的数据库连接信息,并提供一个有效的 trace_id

向您提几个问题以获取更多信息:

  1. 您是否已经尝试过开启 SQL 审计功能?
  2. 您是否能够查询 gv$sql_audit 视图并从中获取到所需的 SQL 执行记录?
  3. 您在尝试使用 mysql.general_log 表时遇到了具体的错误消息是什么?
  4. 您是否有特殊的需求,例如需要记录所有的 SQL 语句,还是只需要记录特定类型的 SQL 语句?

这些问题将帮助我们更好地理解您的需求并提供更具体的解决方案。希望这些信息对您有所帮助!

附上敏捷诊断工具 obdiag 使用帮助链接