oceanbase 多副本容灾模式下,jdbc 连接串能否通过三个obproxy地址连接数据库?

【 使用环境 】测试环境
【 OB or 其他组件 】ob
【 使用版本 】4.3.5
【问题描述】oceanbase 多副本容灾模式下,jdbc 连接串能否通过三个obproxy地址连接数据库? 如下:
jdbc:oceanbase://obproxy1:2883,obproxy2:2883,obproxy3:2883/
@论坛小助手

根据文档库中的信息,在 OceanBase 的多副本容灾模式下,JDBC 连接串理论上可以通过多个 OBProxy 地址连接数据库。但是,对于您提供的 JDBC URL 格式 jdbc:oceanbase://obproxy1:2883,obproxy2:2883,obproxy3:2883/,需要注意以下几点:

  • OBProxy 的高可用特性:OBProxy 具有高可用特性,可以处理超时、机器状态变化、网络状态变化等问题,并且能够屏蔽后端异常,让用户无感知(来源:数据库连接和路由概述 → 连接 → 特性)。

  • 连接管理:当通过 OBProxy 与 OBServer 建立一个连接时,客户端与 OBProxy 之间存在一个物理连接,而 OBProxy 与 OBServer 可能存在多个物理连接。OBProxy 能够管理复用这些连接,并为客户提供许多功能特性,比如读写分离、分区表数据路由、分布式 PS、屏蔽后端异常等(来源:数据库连接和路由概述 → 连接 → 连接映射关系)。

然而,关于是否可以在 JDBC URL 中直接指定多个 OBProxy 地址以实现高可用连接,OceanBase 文档中并没有明确说明支持这种格式的连接串。通常情况下,应用程序会通过负载均衡器或者使用具备自动重连机制的客户端驱动来实现对多个 OBProxy 的访问,而不是直接在 JDBC URL 中列出多个地址。

因此,建议采用以下方式之一:

  1. 使用负载均衡设备或服务(如 Nginx、HAProxy 等),将流量分发到不同的 OBProxy 实例上。
  2. 在应用程序代码级别实现 OBProxy 切换逻辑,即当检测到当前使用的 OBProxy 不可用时,切换到备用的 OBProxy 地址进行重试。
  3. 如果您的应用程序框架支持,也可以考虑使用具备内置重连机制的数据源配置工具,例如 HikariCP 或 Druid 数据源。

综上所述,虽然从理论上讲,您可以尝试使用包含多个 OBProxy 地址的 JDBC URL,但为了确保稳定性和兼容性,推荐按照上述建议的方式来进行多 OBProxy 的访问配置。如果您确实需要这样的功能,建议联系 OceanBase 的官方支持团队获取更详细的指导和支持。

检索到的文档如下:

  1. 数据库连接和路由概述
  2. 产品 FAQ
  3. 升级 OceanBase 集群
  4. 高可用概述
  5. 部署 OceanBase 集群
  6. OceanBase 数据库多租户线程
  7. Hibernate 连接 OceanBase 数据库示例程序
  8. 发起租户级备份

可以的,通过jdbc配置也是负载均衡方式的一种

2 个赞