我在一个集群里面部署了odp怎么用

我在一个集群里面部署了odp怎么用
我想知道业务程序是需要直接连数据库还是链接odp。不过链接odp好像没有用,那odp是怎么做代理的
ODP 接收用户发出的 SQL 请求,并将 SQL 请求转发至最佳目标 OBServer这个是怎么实现的

3 个赞

@论坛小助手

ocp部署的么

业务程序如何连接 ODP

根据文档中的信息,ODP (OceanBase Database Proxy) 是 OceanBase 数据库专用的代理服务器。它接收用户发出的 SQL 请求,并将这些请求转发至最佳目标 OBServer 节点,最后将执行结果返回给用户。因此,业务程序应该直接连接到 ODP,而不是直接连接到 OBServer 节点。

如何使用 ODP

  1. 安装和部署 ODP

  2. 配置 ODP

    • ODP 在任何一台机器上部署后,通过向外暴露一个 ip:port 来提供 OceanBase 的代理服务。一般推荐使用默认端口 2883。
    • 如果在同一台机器上部署多个 ODP 服务,需要指定不同的端口和配置文件路径予以区分。
  3. 连接 ODP

    • 业务程序可以通过 ODP 的 ip:port 连接到 OceanBase 数据库。例如,如果 ODP 的 IP 地址是 192.168.1.100,端口是 2883,那么连接字符串可以是 192.168.1.100:2883
    • 这样做的好处是 ODP 可以屏蔽 OBServer 节点本身的复杂性,保证连接的稳定性,并且可以实现高效的数据路由。

ODP 如何实现 SQL 请求转发

ODP 实现 SQL 请求转发的主要原理如下:

  1. 连接管理

    • ODP 维持自身到后端多个 OBServer 节点的连接,采用基于版本号的增量同步方案维持每个 OBServer 节点的连接在同一状态,确保客户端可以高效访问各个 OBServer 节点。
    • 在 OBServer 节点宕机、升级或重启时,客户端与 ODP 的连接不会断开,ODP 会迅速切换到健康的 OBServer 节点上,对应用透明。
  2. 数据路由

    • ODP 获取到 OBServer 节点中的数据分布信息,可以将用户的 SQL 请求高效转发到数据所在机器,从而提高执行效率。
    • 例如,对于 insert into t1 语句,ODP 可以将其转发到含有表 t1 主副本的 OBServer 节点上;对于 update t2 语句,ODP 可以将其转发到含有表 t2 主副本的 OBServer 节点上。
  3. 高可用性

    • ODP 需要高可用能力来保证其服务。通常,ODP 也是由多台节点组成的集群提供服务,用户请求具体会由哪个 ODP 节点来执行,由用户的 F5 或其他负载均衡组件负责。
    • 如果某个 ODP 节点发生故障,负载均衡组件会自动剔除该节点,确保之后的请求不会再发送到故障节点上。

综上所述,业务程序应该直接连接到 ODP,而不是直接连接到 OBServer 节点。ODP 通过高效的连接管理和数据路由机制,确保了数据库访问的稳定性和高效性。更多详细信息,请参考以下文档片段:

详情请参考:

  1. ODP SQL 路由原理
  2. 原理介绍
  3. 通过命令行部署 ODP
  4. 管理 OceanBase 数据库连接
  5. 代理概述
  6. ODP 管理概述
  7. 连接管理
  8. OceanBase 数据库代理(ODP)
  9. 代理层高可用
1 个赞

obd部署的

1 个赞

obclient -uroot@sys#StandAlone -h192.168.80.18 -P2883 -p
是这样链接嘛

2 个赞

已经知道怎么连了

1 个赞

又学到了!

1 个赞

一起学习

1 个赞