开启二次路由时,如果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_REROUTE 为 True。这需要通过以下 SQL 命令来完成:
ALTER PROXYCONFIG SET ENABLE_REROUTE = True;
请注意,只有 root@proxysys 和 root@sys 账号可以执行这条命令。
参考文档提供了关于如何开启和使用二次路由功能的详细描述。希望这些信息能够帮助您理解二次转发的工作原理及其启用方法。
具体信息可参考以下文档:
1 个赞