【技巧分享】应用异常--错误信息包含 OB 错误码问题排查

数据库在运行期间经常会有各种异常情况出现,比如应用程序错误、数据库连接错误、数据库权限问题、数据库资源问题、网络问题等。在这所有的情况中,有一种就是应用异常,但是错误信息包含 OB 的错误码。

为了帮助大家快速定位这种场景下的问题根源并高效解决,这里总结了一套清晰、实用的应用异常且报错信息包含 OB 错误码报错排查流程。这套流程提供明确的操作步骤,旨在提升问题处理效率,尽可能降低对业务的影响,为日常运维工作提供有力的支持。

下图是应用执行报错且错误信息包含 OB 错误码问题排查流程图。

流程介绍

当遇到应用执行异常且报错信息包含 OB 错误码信息的场景,可以按照该流程进行问题排查。

首先要判断是否可以用 obclient 连接数据库手动复现问题,是的话,可以通过连接后问题复现进行排查;否的话,需要排查程序配置的数据源信息。

  • 复现问题进行问题排查
    1. 使用 obclient 通过 2881 连接 OB 集群。

    2. 手动执行 SQL 复现问题场景。

    3. 获取 trace_id。

      • Oracle 租户,执行 select last_trace_id() from dual;
      • MySQL 租户,执行 select last_trace_id;
    4. 获取实际执行 SQL 的主机信息。OB 集群一般是多节点部署,可以通过如下 SQL 获取 SQL 实际执行的节点,然后再进行日志过滤。根据 sql_audit 视图查询结果,svr_ip 对应的主机即实际执行该 SQL 主机。

      • V2.x 版本和 V3.x 版本,执行select * from oceanbase.gv$sql_audit where trace_id='第二步获取的trace_id';
      • V4.x 版本执行 select * from oceanbase.gv$ob_sql_audit where trace_id='第二步获取的trace_id';
    5. 使用 ssh 命令登录到对应的主机,

    6. 使用 cd 命令进入对应的日志文件夹。命令如下:cd /home/admin/oceanbase/log

    7. 执行如下命令过滤日志中相关信息。

      grep "${trace_id}" observer.log 
      
      grep "${trace_id}" observer.log.xxxx
      

根据日志中信息,结合日志分析相关问题。更多日志信息,请参考日志概述。如遇日志中信息不明确,可以联系技术支持人员一起排查。

  • 排查程序配置的数据源信息,详细信息如果有需要可以咨询相关使用方。
    1. 根据数据源明确访问链路。
    2. 明确访问链路包含如下信息的数量和地址。
      • obproxy 的数量与地址信息
      • OBServer主机的数量与地址信息
    3. 判断是否经过 obproxy。
      1. 是。

        1. 通过 ssh 登录对应的 obproxy 节点。

        2. 使用 cd 命令进入 obproxy 的日志目录

        3. 执行如下命令,过滤出错误日志。

          grep "错误文本" obproxy_error.log obproxy_error.log.xxx | grep "出错时间点'
          
        4. 根据过滤出的日志条目,找出出错的 SQL 所路由的 OB 节点。
          然后通过 ssh 登录对应的的 OB 节点进行排查。

      2. 否。

        1. 通过 ssh 登录对应的的 OB 节点。

        2. 进入日志目录,命令如下。

          cd /home/admin/oceanbase/log
          
        3. 执行如下命令,过滤出错误日志。

          grep "sending error" observer.log observer.log.xxx | grep "错误码'
          
        4. 通过过滤出的日志,获取 trace_id,然后继续使用 trace_id 过滤日志。

          grep "trace id" observer.log observer.log.xxx
          
        5. 根据日志中信息,结合日志分析相关问题。更多日志信息,请参考日志概述。如遇日志中信息不明确,可以联系技术支持人员一起排查。

以上为应用异常且包含 OB 错误码的问题排查流程,希望能为日常运维工作提供有力的支持。

典型案例

不区分模式

MySQL 模式

Oracle 模式

相关文档

2 个赞

收藏了

1 个赞

感谢分享

1 个赞