关于“二次路由”到底是什么意思?

开启二次路由时,如果ODP将sql发往错误的observer后,到底是这个错误的observer进行二次路由转发到正确的observer,还是错误observer回包给odp正确的observer信息,然后由odp进行二次路由转发?

@论坛小助手

根据文档库中的信息,二次转发(或称为二次路由) 是指在 ODP(OceanBase 数据库代理)首次将请求转发给 OBServer 节点后,如果 OBServer 节点判断需要执行远程计划或者遇到其他问题,OBServer 会回包告知 ODP 可以执行该语句的正确副本位置,之后由 ODP 根据此次回包重新进行转发。因此,并不是错误的 OBServer 节点直接进行二次转发,而是它返回正确的 OBServer 节点信息,然后由 ODP 进行二次转发

详情说明

  • 初始转发: 当 ODP 首次接收到 SQL 请求并将其转发至某个 OBServer 节点。
  • 反馈与重定向: 如果该 OBServer 节点无法处理请求,它会生成一个响应告诉 ODP 应该将请求转发到哪个正确的 OBServer 节点上。
  • ODP 重试转发: ODP 收到这个响应后,依据其中提供的正确 OBServer 节点信息,再次尝试将请求发送到合适的 OBServer 上。

如何启用二次转发功能

要启用此功能,您可以通过设置 ODP 的配置项 ENABLE_REROUTETrue。这需要通过以下 SQL 命令来完成:

ALTER PROXYCONFIG SET ENABLE_REROUTE = True;

请注意,只有 root@proxysysroot@sys 账号可以执行这条命令。

参考文档提供了关于如何开启和使用二次路由功能的详细描述。希望这些信息能够帮助您理解二次转发的工作原理及其启用方法。

具体信息可参考以下文档:

  1. 保证 OceanBase 数据库高可用
  2. enable_reroute
  3. 二次路由
  4. ODP 传输加密
  5. 连接管理
  6. ping
  7. 代理概述
  8. 备副本延迟阈值
1 个赞