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


    1. 前言

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

    2. trace_id生成规则

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

    1. function parse_trace_id(trace) {
    2. var id = (trace.split('-')[0]).split('Y')[1]
    3. var uval = parseInt(id, 16);
    4. var ip = uval & 0xffffffff;
    5. var port = (uval >> 32) & 0xffff
    6. console.log(ip, port);
    7. var result = "" + (ip >> 24 & 0xff) + "." + (ip >> 16 & 0xff) + "." + (ip >> 8 & 0xff) + "." + (ip >> 0 & 0xff) + ":" + port
    8. $("#result").html("IP: " + result);
    9. alert(result);
    10. return result;
    11. }

    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地址和端口

    1. def get_observer_ip_from_trace_id(content):
    2. if content[0] == 'Y' and len(content) >= 12:
    3. sep = content.find('-')
    4. uval = int(content[1:sep], 16)
    5. ip = uval & 0xFFFFFFFF
    6. port = (uval >> 32) & 0xFFFF
    7. return "%d.%d.%d.%d:%d" % ((ip >> 24 & 0xFF), (ip >> 16 & 0xFF), (ip >> 8 & 0xFF), (ip >> 0 & 0xFF), port)
    8. else:
    9. return ""
    10. # 示例trace_id,你需要替换为实际的trace_id
    11. trace_id = "YB42AC1E81CB-00060AF2025B8782"
    12. # 调用函数并打印结果
    13. result = get_observer_ip_from_trace_id(trace_id)
    14. if result:
    15. print(f"Parsed IP and Port: {result}")
    16. else:
    17. print("Invalid trace_id format")

     

  • 相关阅读:
    hadoop测试环境sqoop使用
    Kyligence 入选 Gartner 指标中台创新洞察报告
    Effective Modern C++[实践]->在创建对象时注意区分()和{}
    /.idea/workspace.xml漏洞以及解决方法
    负载均衡 —— SpringCloud Netflix Ribbon
    Spring Boot 如何快速过滤出一次请求的所有日志?
    Cuda三维纹理的使用
    Linux代码调试----gdb使用介绍
    linux内存、cpu、进程、端口、硬盘管理
    web安全漏洞——身份验证绕过
  • 原文地址:https://blog.csdn.net/weixin_40449300/article/details/139971855