首批通过分布式安全可靠测评,为关键业务系统打造
如何路由到只读型副本查询数据
更新时间:2025-05-21 03:36
问题现象
每天有一部分数据统计 SQL 需要执行,这部分 SQL 对数据的一致性要求不高。由于 SQL 质量不可控,希望通过路由到只读型副本执行。
解决方法
方式一:LDC 路由,如果只读的 SQL 是单独通过一个应用发送的可以在单独部署一个 OBProxy 关联集群,只读应用连接这个 OBProxy
通过要设置为弱一致性读的 OBProxy 连接到数据库,执行如下命令进行修改。
alter proxyconfig set obproxy_read_consistency=1;
该配置项取值为 0 和 1,默认为 0,表示强读 1 表示弱读。
## OBProxy 会将弱读请求路由到同 idc 的 z1
alter system modify zone "z1" set region = "region1";
alter system modify zone "z1" set idc = "idc1";
alter system modify zone "z2" set region = "region1";
alter system modify zone "z2" set idc = "idc2";
alter proxyconfig set proxy_idc_name='idc1';
## 执行测试语句
select * from T1;
方式二:修改 SQL,加上弱一致性读的 Hint 或者修改变量
设置弱读。
set global ob_read_consistency='weak'设置
proxy_route_policy路由参数。## 空为随机读 alter proxyconfig set proxy_route_policy='';添加 Hint 方式。
select /* +READ_CONSISTENCY(WEAK)*/ * from t1;修改变量方式。
set global ob_read_consistency='weak';说明
proxy_route_policy参数值。FOLLOWER_FIRST:优先读从副本。FOLLOWER_ONLY:只读从副本,从副本都失败则报错。UNMERGE_FOLLOWER_FIRST:优先读没合并的从副本。
适用版本
OceanBase 数据库 V4.x 版本。