首批通过分布式安全可靠测评,为关键业务系统打造
一键根因分析
更新时间:2026-04-13 17:11:17
本文适用于独立部署 obdiag 的场景,使用 obdiag rca 命令可帮助 OceanBase 数据库相关的诊断信息分析,目前支持对 OceanBase 的异常场景进行分析,找出可能导致问题的原因。
如果是 obd 部署的集群,可直接通过 obd 侧诊断命令组对所选集群进行信息收集,详细命令可参考 诊断工具命令组。
注:由于根因分析需要大量的内部表数据来进行分析,因此obdiag配置文件中的tenant_sys用户需要有oceanbase库下的表及视图的读权限
rca 命令组总览
# 查看已经支持的所有根因分析场景
obdiag rca list
# 按场景执行根因分分析
obdiag rca run --scene=<scene_name>
scene_name 包含如下:
- disconnection:一键断连诊断,基于obproxy的诊断日志。
- major_hold: 一键卡合并诊断。
- lock_conflict: 一键锁冲突诊断。
- ddl_disk_full: DDL 过程中报磁盘空间不足的问题诊断。
- transaction_disconnection: 针对事务断连场景的根因分析
- log_error: 日志相关问题排查。目前支持:无主场景。
- transaction_not_ending: 事务不结束场景(测试板),目前使用较为复杂。
- transaction_rollback: 事务回滚报错
- transaction_execute_timeout: 事务执行超时报错
- clog_disk_full: clog日志磁盘空间满的问题
- transaction_wait_timeout: 事务等待超时报错
- transaction_other_error: 事务其他错误,除了目前已经列出的错误,比如错误码为:-4030,-4121,-4122,-4124,-4019
obdiag rca list
使用该命令可以获取根因分析目前支持的场景
obdiag rca run
使用该命令可执行指定场景的根因分析
obdiag rca run --scene=<scene_name>
选项说明如下:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --scene | 否 | string | 默认为空 | 需要进行的根因分析场景,可通过 obdiag rca list 查看支持的场景列表 |
| --store_dir | 否 | string | 默认为 ./rca |
根因分析结果保存路径 |
| --input_parameters | 否 | string | 默认为空 | 传递的环境变量,可通过 obdiag rca list 查看帮助 |
以分析断连的场景为例,命令如下:
obdiag rca run --scene=disconnection
输出如下:
+-----------------------------------------------------------------------------------------------------------+
| record |
+------+----------------------------------------------------------------------------------------------------+
| step | info |
+------+----------------------------------------------------------------------------------------------------+
| 1 | node:xxx.xxx.xxx obproxy_diagnosis_log:[2024-01-18 17:48:37.667014] [23173][Y0-00007FAA5183E710] |
| | [CONNECTION](trace_type="CLIENT_VC_TRACE", connection_diagnosis={cs_id:1065, ss_id:4559, |
| | proxy_session_id:837192278409543969, server_session_id:3221810838, |
| | client_addr:"xxx.xxx.xxx.xxx:xxxx", server_addr:"xxx.xxx.xxx.xxx:2883", cluster_name:"obcluster", |
| | tenant_name:"sys", user_name:"root", error_code:-10010, error_msg:"An unexpected connection event |
| | received from client while obproxy reading request", request_cmd:"COM_SLEEP", sql_cmd:"COM_END", |
| | req_total_time(us):5315316}{vc_event:"VC_EVENT_EOS", user_sql:""}) |
| 2 | cs_id:1065, server_session_id:3221810838 |
| 3 | trace_type:CLIENT_VC_TRACE |
| 4 | error_code:-10010 |
+------+----------------------------------------------------------------------------------------------------+
The suggest: Need client cooperation for diagnosis