oceanbase 租户卡住,能够登录租户,但是查询表查不动,长时间没有返回

【 使用环境 】生产环境
【 OB or 其他组件 】ob
【 使用版本 】4.2.1.8
【问题描述】
oceanbase租户hang住,查询数据卡住。


该表只有几行数据


没有明显的报错日志

换个observer链接测试看看,是不是都是这样?

如果其他的observer没问题,重启下卡主的observer看下

三个节点直连均不行

目前是只要查询就被hang住么?还是只是查询这个就被hang住,看一下cpu,磁盘io,如果ocp的话可以看一下cpu,io的监控。
查一下等待事件
select * from GV$SESSION_WAIT where STATE=‘WAITING’\G;
再根据sid查询一下 sql看看有哪些sql在等待
select request_id,usec_to_time(request_time),ELAPSED_TIME,QUEUE_TIME,EXECUTE_TIME,query_sql from v$OB_SQL_AUDIT where sid=’’;

合并超时的排查
找到未合并完成的租户 ID。
select* from CDB_OB_MAJOR_COMPACTION where STATUS != “IDLE”;
查询 server 级别进度表,看有多少分区没有合并完成。
select * from __all_virtual_server_compaction_progress where tenant_id = xxx;
看分区级别进度表,可以找到没有合并完成的分区及 TRACE_ID。
select * from __all_virtual_tablet_compaction_progress where tenant_id = xxx;
通过 SSTable 信息表可以看到 SSTable 的数据量和数据分布。
select * from GV$OB_SSTABLES where tenant_id = xxx and tablet_id = xxx and svr_ip = “xxx”;

1 个赞

alter system change tenant META$1002;

select * from __all_virtual_meta_table where tenant_id=1002 and snapshot_version< 1724732473980725265;

执行sql查一下

ERROR 1146 (42S02): Table ‘oceanbase.__all_virtual_meta_table’ doesn’t exist

__all_tablet_meta_table。 表名错误了 抱歉,
顺便在RS所在的observer上去查看日志,基于’replica not merged’关键字
grep ‘replica not merged’ rootservice.log*

rootservice.log:[2024-08-27 14:42:37.789873] INFO [RS] check_tablet_compaction_scn (ob_major_merge_progress_checker.cpp:517) [323684][T1002_MergeSche][T1002][YB42C0A80A9B-00061F3DE92BA817-0-0] [lt=13] replica not merged to target version or status not match(tenant_id=1002, current_version=1724695203196374165, global_broadcast_scn={val:1724732473980725265, v:0}, current_status=0, compaction_replica={tenant_id:1002, tablet_id:{id:200059}, ls_id:{id:1002}, server:“192.168.10.155:2882”, snapshot_version:1724695203196374165, data_size:28196, required_size:2097152, report_scn:1724695203196374165, status:0})


有个节点无法访问

换成compaction_scn字段试试,无法访问节点在ocp看看显示是否正常

tablet_id:200059
根据id查询__all_tablet_meta_table
select * from __all_tablet_meta_table where tenant_id=1002 and tablet_id=200059;

执行 select * __all_virtual_compaction_diagnose_info where tenant_id=1002;
看一下同tablet id的报错并附上截图看看
可以参考下面的方法试着排查一下
https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000685150?back=kb

1 个赞

因为事情比较紧急,通过重启单个节点解决了

1 个赞

好的,你执行这个select * __all_virtual_compaction_diagnose_info where tenant_id=1002;
截图发过来看看这边帮忙分析下原因

1 个赞


我重启之后,合并就提示说完成了

2 个赞

你是查询信息看到的么?你查询一下这个信息
select * from CDB_OB_MAJOR_COMPACTION where STATUS != “IDLE”;

1 个赞