【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】ODP
【 使用版本 】最新
【问题描述】ODP默认路由规则是什么,最好的路由规则是什么,怎么配置
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】ODP
【 使用版本 】最新
【问题描述】ODP默认路由规则是什么,最好的路由规则是什么,怎么配置
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
根据文档库中的信息,以下是关于 ODP 默认路由规则、最佳路由规则及其配置的详细解答:
ODP 的默认路由规则由参数 server_routing_mode
决定。根据文档片段(标题:server_routing_mode
用于设置 ODP 的路由模式),默认值为 oceanbase
,表示标准路由模式。
oceanbase
):ODP 会充分考虑用户请求涉及的副本位置、用户配置的读写分离路由策略、OceanBase 数据库多地部署的最优链路,以及 OceanBase 数据库各机器的状态及负载情况,将用户的请求路由到最佳的 OBServer 节点上。random
):如果将 server_routing_mode
设置为 random
,ODP 会随机选择 OBServer 发送请求。可以通过修改 ODP 的配置项来调整路由模式:
set global server_routing_mode = 'oceanbase'; -- 标准路由模式(默认)
set global server_routing_mode = 'random'; -- 随机路由模式
最佳路由规则需要根据具体的业务场景和性能需求来选择。以下是一些常见的优化策略:
为了降低网络通信开销,ODP 会感知 SQL 和表数据分布,尽量将请求路由到数据所在的节点。例如,对于 SQL 语句 select c1 from test
,如果 t1 表的数据分布在 OBServer1 节点上,则直接路由到 OBServer1 节点(参考文档片段:高性能是 OceanBase 数据库的重要特性)。
为了减少网络延迟,ODP 优先选择地理上更近的节点进行路由。优先级顺序为:
对于弱读请求,可以通过配置项 proxy_route_policy
来优化路由策略:
通过修改 ODP 的实例级配置项 proxy_route_policy
来设置弱读请求的路由策略:
set global proxy_route_policy = 'follower_first'; -- 弱读优先备副本
set global proxy_route_policy = 'follower_only'; -- 弱读仅备副本
根据业务需求和性能目标,可以综合使用以下配置方法:
proxy_idc_name
,指定机房名称。如果 proxy_idc_name
配置为空,则 LDC 路由失效。proxy_route_policy
控制弱读请求的路由策略。server_routing_mode
选择标准路由模式或随机路由模式。ODP 会间隔一段时间(默认 60 秒)更新 Service Name 相关路由信息,确保缓存信息不会落后太久。可以通过配置项 config_server_refresh_interval
调整刷新频率。
-- 设置标准路由模式
set global server_routing_mode = 'oceanbase';
-- 设置弱读优先备副本
set global proxy_route_policy = 'follower_first';
-- 指定机房名称
set global proxy_idc_name = 'shanghai_idc';
server_routing_mode = oceanbase
,即标准路由模式。server_routing_mode
、proxy_route_policy
、proxy_idc_name
等)实现路由规则的调整。以上内容依据的是文档片段中的相关信息(如 server_routing_mode
参数说明、SQL 路由原理等)。如果需要进一步优化或定制化配置,请结合具体业务场景进行调整。
具体信息可参考以下文档: