关于日志排错问题

【产品名称】OceanBase

【产品版本】3.1.1

【问题描述】MySQL [oceanbase]> select sum(data_size)/1024/1024/1024,sum(required_size)/1024/1024/1024,svr_ip,svr_port from __all_virtual_meta_table where tenant_id=1001 group by svr_ip,svr_port;

ERROR 4012 (HY000): Timeout

输出报错代码为 4012

1、应该在哪个节点 grep 4012 observer.log* 还是每个节点的observer.log 都可以

2、如图,日志有很多的4012 每个4012的traceid都不同,哪个是呢

3、在grep traceid 的时候发现为空,但是其他两个节点能grep出结果,具体应该在哪个节点grep traceid才是对的(如:grep YB42AC140276-0005D39020F36C41 observer.log)

116节点无输出信息

117 和 118 节点有输出,但输出内容和数量都不一样,已哪个为准呢

2、如图,日志有很多的4012 每个4012的traceid都不同,哪个是呢

---------

2个都是,traceid不同应该是你执行了多次这个sql,每次一个traceid

proxy会把sql发到主上去执行,执行日志也需要在主上去看;可以通过select srv_ip,role from __all_virtual_meta_table where table_id=(select table_id from __all_virtual_table where table_name='xxx');查询主在哪里;


好的,感谢工程师

执行语句为:

select sum(data_size)/1024/1024/1024,sum(required_size)/1024/1024/1024,svr_ip,svr_port from __all_virtual_meta_table where tenant_id=1001 group by svr_ip,svr_port;

TableName应该是 __all_virtual_meta_table吧


__all_virtual_meta_table是虚拟表,不适用于上面的方法,上面的方法是针对普通用户表的

您好,我想问一个代码层面的问题。TraceId中的 is_user_request 有何用途,在开源代码中我只看到了赋值,没看到哪里用到了 is_user_request 。

用于区分是否是用户请求的字段,内部还有一些sql是系统发起的,对应的是inner sql

通过proxy连接数据库执行报错后应该先在proxy的日志中查找报错日志,然后根据proxy日志中的ip和trace去相应机器上查找