当前位置: 首页 > news >正文

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

1. 前言

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

2. trace_id生成规则

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

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) & 0xffffconsole.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();

 2. 执行python脚本解析trace_id获取IP地址和端口

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 & 0xFFFFFFFFport = (uval >> 32) & 0xFFFFreturn "%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")

 

http://www.lryc.cn/news/389587.html

相关文章:

  • 鸿蒙开发Ability Kit(程序访问控制):【使用粘贴控件】
  • PL/SQL入门到实践
  • 双非本 985 硕,我马上要入职上海AI实验室大模型算法岗
  • C盘清理和管理
  • 晚上睡觉要不要关路由器?一语中的
  • ardupilot开发 --- 坐标变换 篇
  • git clone 别人项目后正确的修改和同步操作
  • JAVA连接FastGPT实现流式请求SSE效果
  • 二分查找1
  • 什么美业门店管理系统好用?2024美业收银系统软件排名分享
  • 【文件上传】
  • Golang 单引号、双引号和反引号的概念、用法以及区别
  • linux和mysql基础指令
  • JDK 为什么需要配置环境变量
  • ViewBinding的使用(因为kotlin-android-extensions插件的淘汰)
  • IOS Swift 从入门到精通:ios 连接数据库 安装 Firebase 和 Firestore
  • QT4-QT5(6)-const char* QString 乱码转换
  • 报错:RuntimeError_ cuDNN error_ CUDNN_STATUS_EXECUTION_FAILED
  • 黑马点评项目总结1-使用Session发送验证码和登录login和 使用Redis存储验证码和Redis的token登录
  • 【大模型】Vllm基础学习
  • 使用vue动态给同一个a标签添加内容 并给a标签设置hover,悬浮文字变色,结果鼠标悬浮有的字上面不变色
  • 【ajax实战06】进行文章发布
  • Codeforces Round 954 (Div. 3)(A~E)
  • 基于Java微信小程序同城家政服务系统设计和实现(源码+LW+调试文档+讲解等)
  • [21] Opencv_CUDA应用之使用Haar级联的对象检测
  • CXL:拯救NVMe SSD缓存不足设计难题-2
  • Opencv学习项目6——pyzbar
  • Switch 刷安卓11 (LineageOS 18.1) 大气层双系统图文教程
  • Spring Boot与Spring Batch的深度集成
  • RTSP协议在视频监控系统中的典型应用、以及视频监控设备的rtsp地址格式介绍