【 使用环境 】测试环境
【 OB or 其他组件 】obproxy 4.3.5
【 使用版本 】 4.3.5
【问题描述】配置只读proxy,但是访问异常
【复现路径】
老师,您好,我们想搭建一个proxy,用于处理弱读请求读取从副本的。
我们在proxy中配置:
ALTER PROXYCONFIG SET obproxy_read_only = 0;
ALTER PROXYCONFIG SET obproxy_read_consistency = 1;
ALTER PROXYCONFIG SET init_sql='set session ob_read_consistency=WEAK; set session autocommit=1; set session _show_ddl_in_compat_mode = 1;';
但是使用后却出现如下异常:
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手 ] 即可召唤小助手,欢迎试用!
1 个赞
辞霜
2025 年12 月 1 日 15:20
#6
使用内外ip,报错也是直接断链了么。
开启弱一致性读只是配置读写分离的第一步,在开启弱一致性读时,如果没有设置LDC策略,所有的请求还是会按照最开始讲到的 OBProxy 路由策略,优先发送到primary zone,如果未设置primary zone,即primary zone为random,那么请求会按照随机路由的策略,随机发送到任意副本,因此时有可能发送到 Leader 副本,并未实现完全的读写分离。
设置LDC路由策略
alter proxyconfig set proxy_idc_name=‘idc1’;
FOLLOWER_FIRST设置
在设置了LDC路由策略之后,弱一致性的读请求只会就近访问,为了保证弱一致性的读请求能够优先路由到Follower 副本上,还需要对OBProxy设置 proxy_route_policy 参数,这个参数有两个值:
FOLLOWER_FIRST:优先发往备副本,如果无备副本可用则发往主副本。
FOLLOWER_ONLY:只能发往备副本,如果无备副本可用则报错。
设置方式如下,通过连接OBProxy,执行如下命令
obclient [oceanbase]> alter proxyconfig set proxy_route_policy="follower_first";
Query OK, 0 rows affected (0.005 sec)
obclient [oceanbase]> show proxyconfig like "%proxy_route_policy%";
+--------------------+----------------+--------------------+-------------+---------------+
| name | value | info | need_reboot | visible_level |
+--------------------+----------------+--------------------+-------------+---------------+
| proxy_route_policy | follower_first | proxy route policy | false | SYS |
+--------------------+----------------+--------------------+-------------+---------------+
1 row in set (0.002 sec)
通过以上的设置,那么就可以实现弱一致性的优先访问 follower 副本的策略。
1 个赞
banjin
2025 年12 月 1 日 15:33
#7
补充一句你的这个搭建的时候是用的127.0.0.1吗,如果是建议重新部署一下,这个回环地址从别的地方也连接不了
没有配置 127.0.0.1呢。
用的是服务器的内网地址,测试的时候,没太讲究,后面我们注意一下。