我在一个集群里面部署了odp怎么用
我想知道业务程序是需要直接连数据库还是链接odp。不过链接odp好像没有用,那odp是怎么做代理的
ODP 接收用户发出的 SQL 请求,并将 SQL 请求转发至最佳目标 OBServer这个是怎么实现的
3 个赞
ocp部署的么
业务程序如何连接 ODP
根据文档中的信息,ODP (OceanBase Database Proxy) 是 OceanBase 数据库专用的代理服务器。它接收用户发出的 SQL 请求,并将这些请求转发至最佳目标 OBServer 节点,最后将执行结果返回给用户。因此,业务程序应该直接连接到 ODP,而不是直接连接到 OBServer 节点。
如何使用 ODP
-
安装和部署 ODP:
- 您可以使用 OCP 或 obd 来安装和部署 ODP。
- 使用 RPM 包也可以安装 ODP,详细操作请参见相关文档(例如:使用 OCP 部署 ODP 和 使用 obd 部署 ODP)。
-
配置 ODP:
- ODP 在任何一台机器上部署后,通过向外暴露一个
ip:port来提供 OceanBase 的代理服务。一般推荐使用默认端口 2883。 - 如果在同一台机器上部署多个 ODP 服务,需要指定不同的端口和配置文件路径予以区分。
- ODP 在任何一台机器上部署后,通过向外暴露一个
-
连接 ODP:
- 业务程序可以通过 ODP 的
ip:port连接到 OceanBase 数据库。例如,如果 ODP 的 IP 地址是192.168.1.100,端口是 2883,那么连接字符串可以是192.168.1.100:2883。 - 这样做的好处是 ODP 可以屏蔽 OBServer 节点本身的复杂性,保证连接的稳定性,并且可以实现高效的数据路由。
- 业务程序可以通过 ODP 的
ODP 如何实现 SQL 请求转发
ODP 实现 SQL 请求转发的主要原理如下:
-
连接管理:
- ODP 维持自身到后端多个 OBServer 节点的连接,采用基于版本号的增量同步方案维持每个 OBServer 节点的连接在同一状态,确保客户端可以高效访问各个 OBServer 节点。
- 在 OBServer 节点宕机、升级或重启时,客户端与 ODP 的连接不会断开,ODP 会迅速切换到健康的 OBServer 节点上,对应用透明。
-
数据路由:
- ODP 获取到 OBServer 节点中的数据分布信息,可以将用户的 SQL 请求高效转发到数据所在机器,从而提高执行效率。
- 例如,对于
insert into t1语句,ODP 可以将其转发到含有表 t1 主副本的 OBServer 节点上;对于update t2语句,ODP 可以将其转发到含有表 t2 主副本的 OBServer 节点上。
-
高可用性:
- ODP 需要高可用能力来保证其服务。通常,ODP 也是由多台节点组成的集群提供服务,用户请求具体会由哪个 ODP 节点来执行,由用户的 F5 或其他负载均衡组件负责。
- 如果某个 ODP 节点发生故障,负载均衡组件会自动剔除该节点,确保之后的请求不会再发送到故障节点上。
综上所述,业务程序应该直接连接到 ODP,而不是直接连接到 OBServer 节点。ODP 通过高效的连接管理和数据路由机制,确保了数据库访问的稳定性和高效性。更多详细信息,请参考以下文档片段:
详情请参考:
1 个赞
obd部署的
1 个赞
obclient -uroot@sys#StandAlone -h192.168.80.18 -P2883 -p
是这样链接嘛
2 个赞
已经知道怎么连了
1 个赞
又学到了!
1 个赞
一起学习
1 个赞