首批通过分布式安全可靠测评,为关键业务系统打造
代理概述
更新时间:2026-05-10 19:45:10
OceanBase Database Proxy(简称 ODP )是 OceanBase 数据库专用的代理服务器。OceanBase 数据库的用户数据以多副本的形式存放在各个 OBServer 上,ODP 接收用户发出的 SQL 请求,并将 SQL 请求转发至最佳目标 OBServer,最后将执行结果返回给用户。
为什么需要 ODP?
ODP 是代理服务器,代理服务器会让访问数据库的链路多一次跳转,那为什么需要 ODP 呢?我们以下图为例进行说明。

图中 APP 是我们的业务程序,APP 前面有三台 OBProxy( ODP 的进程名叫做 obproxy ),在实际部署中, OBProxy 和 APP 之间一般会有一个负载均衡(如:F5 )将请求分散到多台 OBProxy 上面,OBProxy 下面是 OBServer,图中有 6 台 OBServer。
需要使用 ODP 的原因如下:
连接管理:OBServer 集群规模庞大,机器、软件出现问题或者本身运维机器上线、下线概率较大,如果直连 OBServer,遇到上面的情况客户端就会发生断连。ODP 屏蔽了 OBServer 本身分布式的复杂性,客户连接 ODP,ODP 可以保证连接的稳定性,自身对 OBServer 的复杂状态进行处理。
数据路由:ODP 可以获取到 OBServer 中的数据分布信息,可以将用户 SQL 高效转发到数据所在机器,执行效率更高。如:表 t1 数据在图中 P1 内,表 t2 数据在图中 P2 内,表 t3 数据在图中 P3 内。对于 insert into t1 语句 ODP 可以将 SQL 转发到 ZONE_2 中含有 P1 主副本的机器上。对于 update t2 语句 ODP 可以将 SQL 转发到 ZONE_1 中含有 P2 主副本的机器上。
ODP 可以实现像使用单机数据库一样使用分布式数据库。
ODP 特性
作为 OceanBase 数据库的关键组件,ODP 具有如下特性:
高性能转发
ODP 完整兼容 MySQL 协议,并支持 OceanBase 自研协议,采用多线程异步框架和透明流式转发的设计,保证了数据的高性能转发,同时确保了自身对机器资源的最小消耗。
最佳路由
ODP 会充分考虑用户请求涉及的副本位置、用户配置的读写分离路由策略、OceanBase 数据库多地部署的最优链路,以及 OceanBase 数据库各机器的状态及负载情况,将用户的请求路由到最佳的 OBServer,最大程度的保证了 OceanBase 数据库整体的高性能运转。
连接管理
针对一个客户端的物理连接,ODP 维持自身到后端多个 OBServer 的连接,采用基于版本号的增量同步方案维持了每个 OBServer 连接的会话状态,保证了客户端高效访问各个 OBServer。
专有协议
ODP 与 OBServer 默认采用了 OceanBase 专有协议,如增加报文的 CRC 校验保证与 OBServer 链路的正确性,增强传输协议以支持 Oracle 兼容性的数据类型和交互模型。
安全可信
ODP 支持使用 SSL 访问数据,并和 MySQL 协议做了兼容,满足客户安全需求。
易运维
ODP 本身无状态支持无限水平扩展,支持同时访问多个 OceanBase 集群。可以通过丰富的内部命令实现对自身状态的实时监控,提供极大的运维便利性。
许可证
ODP 社区版完全开源,使用 MulanPubL - 2.0 许可证,您可以免费复制和使用源代码。当您修改或分发源代码时,请遵守木兰协议。