datax通过jdbc连接obproxy,报错

【 使用环境 】测试环境
【 OB or 其他组件 】OB datax obproxy
【 使用版本 】V4.0.0_CE_BP3
【问题描述】datax通过jdbc连接obproxy报错,但是通过obclient直连可以
【复现路径】下载oceanbase-all-in-one-4.0.0.0-100120230113164218.el7.x86_64.tar.gz,安装,并通过obd demo启动;下载DataX-datax_v202306.zip
【问题现象及影响】
配置mysql到oceanbase的数据同步,报错
2023-07-25 18:47:59.695 [job-0] INFO DBUtil - this is ob1_0 jdbc url.
2023-07-25 18:47:59.702 [job-0] INFO DBUtil - this is ob1_0 jdbc url. user=demo:obmysql:root :url=jdbc:oceanbase://192.168.6.133:2883/db2
2023-07-25 18:47:59.919 [job-0] ERROR RetryUtil - Exception when calling callable, 异常Msg:Code:[DBUtilErrorCode-10], Description:[连接数据库失败. 请检查您的 账号、密码、数据库名称、IP、Port或者向 DBA 寻求帮助(注意网络环境).]. - 具体错误信息为:java.sql.SQLNonTransientConnectionException: Could not connect to 192.168.6.133:2883 : unexpected end of stream, read 3 bytes from 4
com.alibaba.datax.common.exception.DataXException: Code:[DBUtilErrorCode-10], Description:[连接数据库失败. 请检查您的 账号、密码、数据库名称、IP、Port或者向 DBA 寻求帮助(注意网络环境).]. - 具体错误信息为:java.sql.SQLNonTransientConnectionException: Could not connect to 192.168.6.133:2883 : unexpected end of stream, read 3 bytes from 4
at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:30) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.rdbms.util.RdbmsException.asConnException(RdbmsException.java:36) ~[plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.rdbms.util.DBUtil.connect(DBUtil.java:397) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.rdbms.util.DBUtil.connect(DBUtil.java:387) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.rdbms.util.DBUtil.access$000(DBUtil.java:22) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.rdbms.util.DBUtil$3.call(DBUtil.java:322) ~[plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.rdbms.util.DBUtil$3.call(DBUtil.java:319) ~[plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.common.util.RetryUtil$Retry.call(RetryUtil.java:164) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.common.util.RetryUtil$Retry.doRetry(RetryUtil.java:111) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.common.util.RetryUtil.executeWithRetry(RetryUtil.java:30) [datax-common-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.rdbms.util.DBUtil.getConnection(DBUtil.java:319) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.rdbms.util.DBUtil.getConnection(DBUtil.java:303) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.writer.oceanbasev10writer.util.DbUtils.fetchSingleValueWithRetry(DbUtils.java:49) [oceanbasev10writer-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.writer.oceanbasev10writer.OceanBaseV10Writer$Job.checkCompatibleMode(OceanBaseV10Writer.java:198) [oceanbasev10writer-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.writer.oceanbasev10writer.OceanBaseV10Writer$Job.init(OceanBaseV10Writer.java:61) [oceanbasev10writer-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.job.JobContainer.initJobWriter(JobContainer.java:704) [datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.job.JobContainer.init(JobContainer.java:304) [datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.job.JobContainer.start(JobContainer.java:113) [datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.Engine.start(Engine.java:86) [datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.Engine.entry(Engine.java:168) [datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.Engine.main(Engine.java:201) [datax-core-0.0.1-SNAPSHOT.jar:na]
2023-07-25 18:48:00.925 [job-0] ERROR RetryUtil - Exception when calling callable, 即将尝试执行第1次重试.本次重试计划等待[1000]ms,实际等待[1005]ms, 异常Msg:[Code:[DBUtilErrorCode-10], Description:[连接数据库失败. 请检查您的 账号、密码、数据库名称、IP、Port或者向 DBA 寻求帮助(注意网络环境).]. - 具体错误信息为:java.sql.SQLNonTransientConnectionException: Could not connect to 192.168.6.133:2883 : unexpected end of stream, read 3 bytes from 4]

【附件】

通过 obclient 直连的是 observer 吗,通过 obproxy 能连上吗,因为 obd demo 的方式使用了 127.0.0.1 作为地址,在远程的机器上连接可能会有问题,建议不要用 obd demo 的形式,可以写配置文件,写真实的 ip 地址的方式来启动

不是远程访问,不过我试一下其他启动方式

通过obclient能直连observer,也能通过obproxy连上

那应该是 obproxy 和 OB 部署在一起吧, 不太确定 datax 会不会用到 rs_list, 如果用的是 java 的客户端的话,很可能会用到,最好还是用真实 ip 地址来部署吧

好的

将ip修改为真实ip,用obd demo重新部署,但是还是报同样的错误

obd demo 会自己生成配置文件,用的地址应该就是127.0.0.1的,需要写好配置文件,然后obd cluster deploy xxx -c xxx.yaml, 然后再 obd cluster start xxx

obd cluster edit-config demo 通过这个语句修改ip,然后重新部署,并启动,还是报错的;感觉跟ip没有关系;然后也没有思路再去验证

问题已经解决,是jdbc的连接信息写错了,把clustername写成了deployname

您好,请问您的json文件里oceanbasev10writer的jdbcurl是什么样的呢?我也是总报一样的错误

“jdbcUrl”: “||dsc_ob10_dsc||obcluster:obmysql||dsc_ob10_dsc||jdbc:mysql://192.168.6.133:2883/db2?useLocalSessionState=true&allowBatch=true&allowMultiQueries=true&rewriteBatchedStatements=true”,