码到成功
2023 年3 月 8 日 22:04
#1
【 使用环境 】测试环境
【 OB or 其他组件 】
ob、oblogproxy
【 使用版本 】
OceanBase4.0
oblogproxy 1.0.3
oblogproxy-client1.0.7
jdk1.8
【问题描述】清晰明确描述问题
通过oblogproxy 获取增量数据变动 clog
OceanBaseDB和oblogproxy 在同一台机器上部署,logproxyclient可以采集到LogMessage 消息并正常
OceanBaseDB和oblogproxy 分开部署,通过logproxyclient可以采集不到LogMessage 消息,只有心跳
【复现路径】问题出现前后相关操作
无
【问题现象及影响】
请问 DB和oblogproxy分开部署是否有额外的配置和准备?是否有案例可以参考?
【附件】
热海
2023 年3 月 9 日 10:38
#3
码到成功
2023 年3 月 9 日 12:29
#4
可能是我问题分类的错误,我是oblogProxy的问题,不是OBProxy的,所以您的链接未能解决我的问题
cdc是对增量数据变化的捕获,obcdc 衍生出了 oblogproxy
川粉
2023 年3 月 9 日 14:50
#5
在您描述的场景里,我推测的可能原因是:部署到同一台机器上时,两者使用了相同版本的依赖库,而在分开部署时,oblogproxy 会自动下载最新的依赖,结果上造成了依赖版本不对,因此出现了问题。
OceanBase 社区版 4.0 推荐的搭配是 oblogproxy 1.1.0,建议您使用压缩包形式进行部署,可以避免依赖版本冲突的问题。在下边任意链接选择 1.1.0 for 4x
https://www.oceanbase.com/softwarecenter
码到成功
2023 年3 月 9 日 15:03
#6
我想知道,分开部署之后 oblogproxy的配置/conf/conf.json 和 接受消息的端配置及参数是否需要调整?
分开部署之后代码如下:
ObReaderConfig config = new ObReaderConfig();
// OB库
config.setRsList("192.168.1.41:2882:2881;");
// 设置用户名和密码(非系统租户)
config.setUsername("test@mysql_tenant");
config.setPassword("test");
// 设置启动位点(UNIX时间戳,单位s), 0表示从当前时间启动。
config.setStartTimestamp(0L);
// 设置订阅表白名单,格式为:tenant.db.table, '*'表示通配.
config.setTableWhiteList("mysql_tenant.*.*");
//oblogproxy服务地址,创建实例.
LogProxyClient client = new LogProxyClient("192.168.1.99", 2983, config);
码到成功
2023 年3 月 9 日 15:49
#7
另外:
1.1.0版本我们再虚拟机中启动报错:
大概看了下源码,物理机和虚拟机的返回不一样
虚拟机中"ip -o -4 route show to default "的返回:
[root@xxxx~]# ip -o -4 route show to default
default via 192.168.1.1 dev ens33 proto static metric 100
物理机返回:
[root@xxxx~]# ip -o -4 route show to default
default via 10.117.255.253 dev eth0
码到成功
2023 年3 月 9 日 18:11
#10
客户端启动后,代理的oblogproxy/run/{client-id}/log/liboblog.log 有warn和error,
WARN [TLOG.FETCHER] change_to_next_server_ (ob_log_systable_helper.cpp:1669) [377][0][Y0-0000000000000000] [lt=9] init mysql connector fail, need retry(ret=-4036, ret=“OB_NEED_RETRY”
ERROR [TLOG.FETCHER] do_query_ (ob_log_systable_helper.cpp:1540) [377][0][Y0-0000000000000000] [lt=5] connect to server fail, need switch server(ret=-4036, ret=“OB_NEED_RETRY”, svr_idx=0, next_svr_idx=1, retry_svr_cnt=0, server_count=1)
如图:
码到成功
2023 年3 月 9 日 23:59
#11
通过root@sys链接后不再有Access denied,程序能收到心跳,但是增量数据采集不到
liboblog.log持续报错,
[2023-03-09 23:59:08.499989] ERROR [TLOG] req_start_log_id_by_tstamp (ob_log_rpc.cpp:94) [5101][0][Y131AC0A80163-0000000000800E26] [lt=4] rpc fail: req_start_log_id_by_ts_with_breakpoint(svr=“127.0.0.1:2882”, rpc_ret=-4121, result_code=0, req={rpc_ver:1, param_count:1, params:[{pkey:{tid:1099511627781, partition_id:0, part_cnt:0}, start_tstamp:1678377180881345, break_info_:{break_file_id_:4294967295, min_greater_log_id_:18446744073709551615}}]}) BACKTRACE:
三木大大
2023 年3 月 10 日 23:25
#14
这里有RPC_SEND_ERROR的报错,可以先看下oblogproxy所在虚拟机能否与OB的SQL端口和RPC端口联通
码到成功
2023 年3 月 11 日 17:20
#15
另外我想问,日志里代理服务器上为什么会访问127.0.0.1:2882 这个是ob的,代理服务器本地确实没有
三木大大
2023 年3 月 12 日 11:31
#16
oblogproxy访问的机器ip是从ob的__all_server表里获取的,可以看下为什么表里记录的是127.0.0.1
三木大大
2023 年3 月 13 日 15:00
#18
可以尝试把oblogproxy部署到OB机器上,应该能临时解决这个问题。要根本解决的话,需要定位__all_server表中记录的是127.0.0.1(可能是选择的网卡原因?)
码到成功
2023 年3 月 13 日 18:19
#19
1、部署在OB机器上可以采集的
2、__all_server表里的数据在cluster start 的时候会生成(或更新)
3、通过检查 127.0.0.1是yaml的配置中的值,现在通过修改并重新deploy后启动,__all_server的值已经更新
至此,ob和logproxy分开部署无法采集增量数据的问题解决
你好 我下载了此压缩包, 无法使用logproxy, 我将压缩包中的二进制文件链接到了/usr/lib下, 但是还是不行, 我哪里没做对吗
三木大大
2023 年4 月 29 日 13:21
#21
这个报错的原因是找不到libobcdc.so.4这个动态库,可以执行
LD_LIBRARY_PATH=/root/oblogproxy/liboblog/ ./oblogproxy -h
1 个赞