OBD路由咨询

设置 odp proxy 策略 proxy_primary_zone_name为zone2
primary_zone 为(zone1;zone2,zone3)
连接此odp执行更新 是不是先路由到zone2 然后再从zone2发送请求到zone1

odp有个配置项enable_reroute 默认是关闭的
这个配置项是控制是否开启二次路由,对于上述的更新场景是不是没作用的

不起作用,制定了proxy的primary_zone之后默认把请求发送到zone2

@论坛小助手

您好,您提到的问题似乎与 OceanBase 没有关联,我无法回答,敬请谅解! 如果您有其他 OceanBase 相关问题,欢迎继续提问。

下面是使用 Primary Zone 的两种方法,按需选择

  • 配置 OceanBase 集群的 Primary Zone 且 OBProxy 配置项 enable_primary_zone=True
  • 配置 OBProxy 实例级配置项 proxy_primary_zone_name

注意:proxy_primary_zone_name 优先级高于 OceanBase 集群的 Primary Zone,proxy_primary_zone_name 值非空时,OceanBase 集群 Primary Zone 路由失效

举例1

  1. 集群部署
    zone1(11)
    zone2(12)
    zone3(13)
  2. 修改配置项 proxy_primary_zone_name
    ALTER PROXYCONFIG SET PROXY_PRIMARY_ZONE_NAME = ‘z2’;
  3. 执行强读请求,使用 EXPLAIN ROUTE 查看路由选取过程,预期路由到 12 (z2) 副本

EXPLAIN ROUTE SELECT /* +READ_CONSISTENCY(STRONG) */ 1\G

举例2
使用集群 Primary Zone

–集群部署
zone1(11)
zone2(12)
zone3(13)

  1. 查看集群 Primary Zone ‘z3;z1,z2’

SELECT TENANT_NAME, PRIMARY_ZONE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME=‘mysql’\G

OceanBase(admin@test)>SELECT TENANT_NAME, PRIMARY_ZONE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME=‘mysql’\G

*************************** 1. row ***************************

TENANT_NAME: mysql

PRIMARY_ZONE: z3;z1,z2

1 row in set (0.38 sec)

  1. 执行强读请求,使用 EXPLAIN ROUTE 查看路由选取过程,预期路由到 13 (z3) 副本

EXPLAIN ROUTE SELECT /* +READ_CONSISTENCY(STRONG) */ 1\G

对于上述的场景 没有作用

这个在官网有说明
配置项 proxy_primary_zone_name 优先级高于 OceanBase 集群的 Primary Zone,proxy_primary_zone_name 值非空时,OceanBase 集群 Primary Zone 路由失效。如果主副本在zone1,就会产生远程执行计划
enable_reroute是二次路由与这个无关

1 个赞

enable_reroute
老师 麻烦问一下 这个参数的二次路由功能一般是用在什么场景下

设置enable_reroute二次路由,适用于哪些场景 @论坛小助手

根据文档库中的信息,enable_reroute 参数的二次路由功能主要用于以下场景:

1. 解决因分区表主副本分布不均导致的远程执行计划

  • 在 OceanBase 数据库中,分区表的主副本可能分布在不同的 Zone 中。如果某个 SQL 请求的主副本不在当前 Zone(例如 Primary Zone),可能会产生 Remote 计划,导致性能下降。
  • 启用 enable_reroute 参数后,ODP 可以尝试将请求重新路由到包含主副本的 Zone,从而减少 Remote 计划的发生,提升性能。

2. 优化分布式事务的执行路径

  • 在分布式事务中,如果参与事务的多个分区的主副本分布在不同的 Zone 中,可能会导致跨 Zone 的通信开销增加。
  • 启用 enable_reroute 后,ODP 可以动态调整请求的路由策略,尽量将请求发送到包含事务相关分区主副本的 Zone,减少跨 Zone 的通信。

3. 应对异地多活部署中的延迟问题

  • 在多地多中心(Multi-DC)部署场景中,不同 Region 或 Zone 之间的网络延迟较高。如果 SQL 请求被路由到非本地 Zone 的副本,可能会显著影响性能。
  • 启用 enable_reroute 后,ODP 可以根据当前请求的负载、网络状态和副本位置,动态调整路由策略,优先选择本地 Zone 或低延迟的 Zone。

4. 处理副本切换后的路由调整

  • 在 OceanBase 数据库中,Leader 副本可能会因为故障恢复或负载均衡等原因发生切换。如果 SQL 请求仍然被路由到旧的 Leader 副本所在的 Zone,可能会导致请求失败或性能下降。
  • 启用 enable_reroute 后,ODP 可以在检测到 Leader 切换后,自动调整路由策略,将请求重新路由到新的 Leader 副本所在的 Zone。

注意事项

  • enable_reroute 参数默认是关闭的(False)。如果启用该参数,可能会增加 ODP 的计算开销,因此需要根据实际业务场景权衡性能收益和资源消耗。
  • 启用该参数后,建议结合 LDC 路由配置(如 proxy_primary_zone_nameprimary_zone)一起使用,以进一步优化路由策略。

文档依据

上述内容综合了以下文档片段的信息:

  • 文档片段标题: ODP 表路由
  • 文档片段标题: SQL 路由
  • 文档片段标题: LDC 路由

如果您有更多具体场景或需求,可以进一步讨论!

详情请参考:

  1. 重启节点
  2. 管理 DBLink
  3. ODP 性能分析
  4. OceanBase 迁移服务(OMS)
  5. 使用 SQL 命令进行数据迁移
  6. ODP 表路由
  7. SQL 路由
  8. LDC 路由
  9. OceanBase 数据库在 MySQL 模式租户下的扩展功能
  10. 旁路导入概述