Hbase迁移到Oceanbase集群后,数据插入失败。

【 使用环境 】政务测试环境
【 OB or 其他组件 】
【 使用版本 】4.6
【问题描述】目前kv租户创建成功,表和表组创建成功,目前程序启动通过odp链接的2885端口的方式链接,日志显示连接成功,但是时间数据操作的时候报错
【复现路径】
【附件及日志】
image


8 个赞

又学习了一天

3 个赞

没看到报错信息呀,框出来的部分都是info信息

1 个赞

文中对回复的分析很到位,补充一点:结合Hbase迁移到Oceanbase集群后和数据插入失败可以获得更好的效果。

1 个赞

打卡

把操作的语句也发一下 日志信息根据下面的步骤也发一下
a. 登录系统租户,打开enable_rich_error_msg 参数
alter system set enable_rich_error_msg=true;
b. 登录业务租户,执行报错 SQL 语句,会直接返回执行节点 IP 和 trace_id 信息。
obclient [test]> select count(*) from t2;
ERROR 1146 (42S02): Table ‘test.t2’ doesn’t exist
[xx.xx.xx.1:2882] [2024-04-13 20:10:20.292087] [YB420BA1CC68-000615A0A8EA5E38-0-0]
c. 去 xx.xx.xx.1 节点过滤日志,如果最新日志无法过滤到,可以正则匹配多个日志进行过滤
[root@x.x.x.1 ~]$ grep “YB420BA1CC68-000615A0A8EA5E38-0-0” rootservice.log
[root@x.x.x.1 ~]$ grep “YB420BA1CC68-000615A0A8EA5E38-0-0” observer.log
d. 获取完日志信息后,关闭enable_rich_error_msg参数
alter system set enable_rich_error_msg=false;

这个是在程序中insert的时候报错


image
这个是一个data接口的日志目录,根据错误id 没有搜索到,下面好像没有observer.log文件
image

可以服务器上 黑屏执行一下 看看是否报错么?或者你执行完以后报错 把报错的observer.log发一下 obproxy_error.log也发一下

observer.log通过id没有找到日志,下面是obproxy的日志
[root@ob-proxy log]# grep ‘Y189F6C0A8170E-0000000000000024’ obproxy.log
[2026-05-12 14:32:17.351550] WDIAG [PROXY.SM] process_partition_location (ob_rpc_request_sm.cpp:2688) [3353509][Y0-0000FFFF184BE660] [lt=0] [dc=0] handle the table not exist in cluster(ret=-5019, rpc_trace_id={trace_id:“Y189F6C0A8170E-0000000000000024-0-0”, sub_index_id:0})
[2026-05-12 14:32:17.351557] WDIAG [PROXY.SM] state_rpc_partition_lookup (ob_rpc_request_sm.cpp:2853) [3353509][Y0-0000FFFF184BE660] [lt=0] [dc=0] fail to process partition location(sm_id=73, ret=-5019, rpc_trace_id={trace_id:“Y189F6C0A8170E-0000000000000024-0-0”, sub_index_id:0})

先看一下表是否存在当前的租户里,你重新做一次 根据trace_id搜一下observer.log日志 如果是多副本的 建议每个observer都搜一下 把obrpxoy的日志 整个也提供一下

根据trace_id 三个observer节点都没有找到匹配的日志,另外通过kv租户在obp登录的时候,可以通过insert into直接插入信息


从日志信息来看 貌似的报错 像是表不在你连接的租户下 OB_TABLE_NOT_EXIST (-5019)

现在程序配置odp链接参数
obkv-hbase:
odp-addr: 192.168.23.2
odp-port: 2885
full-user-name: root@kv_tenant#ob-prod
usr-pass: **********
sys-user-name: root@sys
sys-user-pass: ********
database: sddz

看日志信息报的怀疑这个 你使用odp连接 试一下看看是不是也报错?

现在程序是通过odproxy的2885端口来链接的啊 ,程序初始化看日志是成功,只是往里面写数据报错。

那你服务器上直接通过obroxy连接 操作一下看看是否报错 你上面的操作应该是没有通过obproxy连接操作的吧 看着是成功的

上面的截图是直接通过obproxy 客户端登录的,不过用的是obproxy的2883端口

那你的obproxy的端口 到底是哪个呀 你程序中使用2883试一下 2885端口是哪个呀

我看文档2883是mysql协议的端口,如果是kv协议 要走2885的rpc端口??

嗯嗯 主要没有observer.log日志信息 你使用程序连接重新操作一下 把obproxy.log日志 observer.log整个都发一下