在 OceanBase 同城三中心多副本架构下,报表类弱读业务如何配置 LDC 策略,才能精准路由到本机房的 follower 副本?我试过配置 proxy_route_policy=FOLLOWER_ONLY,但偶尔还是会跨机房,想请教下完整的配置链路。
3 个赞
在 OceanBase 同城三中心多副本架构下,报表类弱读业务需要通过以下步骤精确配置 LDC 策略,确保路由到本机房的 follower 副本:
-
配置 OceanBase 集群 LDC
- 在 OceanBase 数据库支持的客户端工具中使用 root 用户登录集群的 sys 租户。
- 执行如下语句配置 LDC:
obclient> ALTER SYSTEM MODIFY zone "z1" SET region = "SHANGHAI"; obclient> ALTER SYSTEM MODIFY zone "z1" SET idc = "zue";- 参数说明:
-
region表示 Zone 所在的地域信息,通常设置为城市名(大小写敏感)。 -
idc代表该 Zone 所处的机房信息,通常设置为机房名(小写)。
-
-
配置 ODP 的 LDC
- 通过 ODP 进程启动时指定 IDC 配置项,示例如下:
cd /opt/taobao/install/obproxy-1.5.5 ./bin/obproxy -o proxy_idc_name=zue- 或者在 OceanBase 数据库支持的客户端工具中运行
ALTER语句修改 ODP 配置项,示例如下:
obclient> ALTER PROXYCONFIG SET proxy_idc_name= 'zue'; -
配置 ODP 的路由策略
- 将
proxy_route_policy配置为FOLLOWER_ONLY,确保弱读请求仅路由到备副本:
obclient> ALTER PROXYCONFIG SET proxy_route_policy= 'FOLLOWER_ONLY';- 如果需要更细粒度的控制,可以考虑使用
FOLLOWER_FIRST,并在其他配置项中进一步优化。
- 将
-
配置应用弱一致性读
- 在 SQL 中携带 HINT 来指定弱一致性读,示例如下:
obclient> SELECT /*+read_consistency(weak)*/ * FROM t1;- 设置 Session 级别的系统变量来指定弱一致性读,示例如下:
obclient> SET @@ob_read_consistency='weak';- 设置全局级别的系统变量来指定弱一致性读,示例如下:
obclient> SET @@global.ob_read_consistency='weak'; -
验证配置
- 通过执行以下语句检查配置是否生效:
obclient> SHOW PROXYINFO IDC;- 返回结果应显示正确的 IDC 配置。
通过以上步骤,可以确保报表类弱读业务在 OceanBase 同城三中心多副本架构下精准路由到本机房的 follower 副本。
检索到的文档如下:
还需要配置:
alter proxyconfig set proxy_idc_name=‘xxxx’
xxx是你需要指定的机房idc
follower_first最好