OBProxy 支持备优先读路由策略,通过用户级别系统变量 proxy_route_policy 控制备优先读路由。备优先读仅在弱一致性读时生效,且优先读 follower 而非主备均衡选择。

    在 OceanBase 数据库支持的客户端工具中使用 root 用户登录集群的 sys 租户后,运行下述语句对系统变量 proxy_route_policy进行设置:

    1. obclient> SET @proxy_route_policy='[policy]';

    参数 [policy]的取值有三种:

    1. 当取值为 follower_first时,路由逻辑是优先发备(即使集群在合并状态),优先级如下所示:

      同机房不合并的备 —> 同城不同机房不合并的备 —> 同机房在合并的备 —> 同城不同机房合并的备 —> 同机房不合并的主 —> 同城不同机房不合并的主 —> 不同城不合并的备 —> 不同城合并的备 —> 不同城不合并的主 —> 不同城合并的主

    2. 当取值为 unmerge_follower_first时,路由逻辑是优先发不在集群合并状态的备机(Follower 节点)。优先级如下所示:

      同机房不合并的备 —> 同城不同机房不合并的备 —> 同机房不合并的主 —> 同城不同机房不合并的主 —> 同机房在合并的备 —> 同城不同机房合并的备 —> 不同城不合并的备 —> 不同城不合并的主 —> 不同城合并的备 —> 不同城合并的主

    3. 当取其他值时,退化至普通弱一致性读主备均衡的路由逻辑。优先级如下所示:

      同机房不合并的主或备 —> 同城不同机房不合并的主或备 —> 同机房在合并的主或备 —> 同城不同机房合并的主或备 —> 不同城不合并的主或备 —> 不同城合并的主或备