shardingsphere 程序换OB的驱动之后,程序一直起不来

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】hibernate → shardingsphere → 数据库驱动 → oceanbase
【 使用版本 】OB4.2.2
【问题描述】程序更换完OB驱动后,启动不了一直卡住,没有报错,shardingsphere支持OB驱动吗
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

用户问题: “ShardingSphere 在更换 OceanBase 4.2.2 版本的驱动后,程序启动失败且没有报错信息,ShardingSphere 是否支持 OceanBase 驱动?”

推荐使用 obdiag 工具进行日志采集,并且将采集到的日志提供给我们以便确认问题所在。
日志采集场景: 集群基础信息
日志采集命令: obdiag gather scene run --scene=observer.base

为了更好地帮助您解决问题,请您提供一些额外的信息:

  1. 您是否确认 ShardingSphere 的版本与 OceanBase 4.2.2 版本的驱动兼容?
  2. 更换驱动前后,您的配置文件是否有改动?如果有,请提供改动的部分。
  3. 您能否提供更多关于程序启动失败的具体现象或日志片段?
  4. 您是否尝试过回滚到之前的驱动版本来验证问题是否由驱动更换引起?

请执行上述日志采集命令并将生成的日志压缩包发送给我们,以便进一步诊断问题。

具体信息可参考以下文档:

  1. (可选)查看资源
  2. 使用 systemd 部署 OceanBase 数据库
  3. 恢复完成后升级租户
  4. 4000 ~ 4499
  5. 0001 ~ 3999
  6. 通过 ODC 连接 OceanBase 数据库
  7. OceanBase Connector/ODBC
  8. 升级概述

附上敏捷诊断工具 obdiag 使用帮助链接

用MySQL模式的话可以不用换驱动,就用MySQL驱动就可以了。

用MySQL驱动执行批量insert插入语句时,应用程序报 communication link failure 还有 connection reset 。OB驱动完全支持ShardingSphere吗

您的问题可能存在误解,实际上据我所知,OceanBase 驱动与 ShardingSphere 的兼容性问题通常不是单纯由驱动支持与否引起的。ShardingSphere 作为一款数据库中间件,其设计目的是为了兼容多种数据库,理论上支持任何实现了 JDBC 接口的数据库驱动。因此,OceanBase 驱动应该能够被 ShardingSphere 正常使用。

针对您提到的 communication link failureconnection reset 错误,这通常是由于网络问题或者数据库连接超时导致的。以下是几个可能的原因和建议:

  1. 网络问题:请检查您的网络连接是否稳定,确保应用程序与 OceanBase 服务器之间的网络通信没有问题。
  2. 连接超时:请检查您的应用程序配置中是否设置了合理的连接超时时间。如果超时时间设置得太短,可能会导致在执行耗时较长的操作时出现连接重置的情况。
  3. 并发量过大:如果您的应用程序在同一时间发起大量的数据库连接请求,可能会导致 OceanBase 无法及时响应所有的请求,从而引发此类错误。建议适当降低并发量或者增加 OceanBase 的资源配额。
  4. 驱动版本兼容性:请确认您使用的 OceanBase 驱动版本与 ShardingSphere 版本之间是否存在兼容性问题。尽管 OceanBase 驱动应该支持 ShardingSphere,但不同版本之间可能存在细微差异。

为了更准确地定位问题,您可以尝试以下步骤:

  • 检查应用程序日志,查看是否有更详细的错误信息。
  • 使用简单的 Java 应用程序直接连接 OceanBase 数据库,尝试执行相同的批量插入操作,观察是否还会出现同样的错误。
  • 如果可能的话,尝试更换其他版本的 OceanBase 驱动,看看问题是否仍然存在。

如果以上方法都不能解决问题,建议您联系 OceanBase 或 ShardingSphere 的技术支持团队,提供更详细的错误信息和日志,以便他们能够更准确地帮助您解决问题。

详情请参考:

  1. 异常处理
  2. SQL FAQ
  3. MySQL 兼容应用错误处理规范
  4. 使用 OceanBase 导数工具在 OceanBase 集群 MySQL 租户间迁移数据

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

用MySQL的驱动批量插入数据程序报报 communication link failure 还有 connection reset 错误是什么原因呢,OB是docker部署的,连接2881端口,会不会有什么问题

这个报错我也遇到过 :sweat:

看看你的是不是这个问题,看看你这个Proxy的参数是false吗?

修改enable_ob_protocol_v2为True试试

docker 部署的话看看端口映射配置的对不对,可以先用 mysqlcli 验证下。
如果环境没问题,mysql、ob 驱动的版本和使用的连接串发出来看看,

程序使用2881直连的数据库

用的是OB驱动2.4.0