首批通过分布式安全可靠测评,为关键业务系统打造
读写分离
更新时间:2026-07-01 17:52:48
读写分离就是在主服务器上修改,数据会同步到备服务器,备服务器只能提供读取数据,不能写入,实现备份的同时也实现了数据库性能的优化,以及提升了服务器安全。对于单机数据库如 MySQL,读写分离指的是写请求发送给主服务器,读请求发送给备服务器。 对于 OceanBase 数据库,我们将读写分离从服务器级别做到了表的 parition 级别,这是 OceanBase 分布式数据库的特有优势。
使用读写分离功能,可以将读请求发送到备副本,降低主副本压力。
注意
使用读写分离后,读请求不保证能够读到最新的数据,时差一般在几百毫秒。
配置读写分离
要使用读写分离,需要两部分设置:
- 设置 SQL 语句为弱读:所谓弱读是指读请求不要求读到最新的数据。对于正常的 SQL 为强读,使用弱读需要一定的设置。
- 修改路由策略:以下图 partition1 为例,三个副本都可以提供弱读服务(主副本也可以提供读服务),通过设置路由策略,可以优先选择备副本。

弱读设置
通过 Hint 设置
OceabBase 的 SQL 提供了弱读 hint /*+READ_CONSISTENCY(WEAK)*/,在 SQL 中添加该 hint 后,就可以开启弱读功能。
select /*+READ_CONSISTENCY(WEAK)*/ * from t1;
通过配置项设置
通过 Hint 的方式需要修改 SQL,有时修改 SQL 会比较麻烦,可以通过修改配置项 obproxy_read_consistency 的值设置。
使用 OBProxy 管理员账号登录数据库
修改配置项
alter proxyconfig set obproxy_read_consistency = 1;
说明
该配置项取值为 0 和 1,默认为 0,表示强读(需要读到最新的数据)。1 表示弱读。
修改路由策略
ODP 通过配置项 proxy_route_policy 修改路由策略,通过设置为 follower_first 和 follower_only 可以让弱读请求优先发给备副本,这两者含义如下:
- follower_first:优先选择备副本,如果备副本都不可用,选择主副本
- follower_only:选择备副本,如果备副本都不可用,断开和客户端的连接 上述两个策略需要根据业务场景选择