【OceanBase诊断调优】—— 如何通过trace_id找到对应的执行节点IP

1. 前言

OceanBase作为分布式数据库,查问题找对节点很关键。好在OceanBase执行的每一条SQL都能通过trace_id来关联起来,知道trace_id怎么知道是在哪个节点发起的呢,请看本文。

2. trace_id生成规则

ob内部trace_id的生成函数如下,通过server ip来做处理的

cpp 复制代码
function parse_trace_id(trace) {
        var id = (trace.split('-')[0]).split('Y')[1]
        var uval = parseInt(id, 16);
        var ip = uval & 0xffffffff;
        var port = (uval >> 32) & 0xffff
        console.log(ip, port);
        var result =  "" + (ip >> 24 & 0xff) + "." + (ip >> 16 & 0xff) + "." +  (ip >> 8 & 0xff) + "." + (ip >> 0 & 0xff) + ":" + port
        $("#result").html("IP: " + result);
        alert(result);
        return result;
    }

3. 通过trace_id反向定位节点IP

  1. 获取SQL的trace_id

从gv$ob_sql_audit中获取或者通过SELECT last_trace_id();获取

方式一:通过sql_audit中获取

复制代码
select query_sql,trace_id from oceanbase.GV$OB_SQL_AUDIT where query_sql like 'xxx%' order by REQUEST_TIME desc limit 5;

方式二:通过当前session执行SELECT last_trace_id();获取

复制代码
SELECT last_trace_id();
  1. 执行python脚本解析trace_id获取IP地址和端口
python 复制代码
def get_observer_ip_from_trace_id(content):
    if content[0] == 'Y' and len(content) >= 12:
        sep = content.find('-')
        uval = int(content[1:sep], 16)
        ip = uval & 0xFFFFFFFF
        port = (uval >> 32) & 0xFFFF
        return "%d.%d.%d.%d:%d" % ((ip >> 24 & 0xFF), (ip >> 16 & 0xFF), (ip >> 8 & 0xFF), (ip >> 0 & 0xFF), port)
    else:
        return ""

# 示例trace_id,你需要替换为实际的trace_id
trace_id = "YB42AC1E81CB-00060AF2025B8782"

# 调用函数并打印结果
result = get_observer_ip_from_trace_id(trace_id)
if result:
    print(f"Parsed IP and Port: {result}")
else:
    print("Invalid trace_id format")
相关推荐
福大大架构师每日一题3 天前
RAGFlow v0.24.0 发布!全新「内存系统 + 多沙箱引擎 + OceanBase 支持」惊艳登场,功能全面革新!
oceanbase·ragflow
云和恩墨10 天前
云和恩墨zCloud V6.0、zData X V3与OceanBase V4完成兼容互认证,解锁数据管理新可能
oceanbase·兼容认证·zcloud·zdatax
OceanBase数据库官方博客13 天前
从分库分表到原生分布式:高德基于 OceanBase 的数据底座演进之路
数据库·oceanbase·分布式数据库
MoMoSQL66613 天前
2026年1月国产数据库大事记:国开行2822万采购Gbase,浙商银行930万采购GoldenDB,墨天轮发布“2025年度数据库”……
数据库·阿里云·tidb·oceanbase·gaussdb
OceanBase数据库官方博客19 天前
OceanBase场景解码系列三|OB Cloud 如何稳定支撑中企出海实现数 10 倍的高速增长?
数据库·oceanbase·分布式数据库
码海踏浪19 天前
从简单到专业在OceanBase中查看SQL是否走索引
数据库·sql·oceanbase
OceanBase数据库官方博客21 天前
DeepK 自动程序修复框架论文——OceanBase 校企联合研究
数据库·oceanbase·分布式数据库
OceanBase数据库官方博客22 天前
高德刘振飞:从自研 OceanBase,回望数据库技术范式变迁
数据库·oceanbase·分布式数据库·高德
MMMMMMMMMMemory23 天前
社区版oceanbase报警XA事务悬挂
数据库·oceanbase
OceanBase数据库官方博客23 天前
APQO自适应参数化查询优化框架——OceanBase 校企联合研究成果
数据库·oceanbase·分布式数据库