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

弱读设置
通过 Hint 设置
OceanBase 数据库的 SQL 提供了弱读 Hint(/*+READ_CONSISTENCY(WEAK)*/),在 SQL 语句中添加该 Hint 即可开启弱读功能。示例如下:
select /*+READ_CONSISTENCY(WEAK)*/ * from t1;
通过配置项设置
通过 Hint 的方式设置弱读需要修改 SQL,有时修改 SQL 会比较麻烦,此时可以通过修改配置项 obproxy_read_consistency 的值设置弱读。方法如下。
使用 ODP 管理员账号(root@proxysys)登录到数据库。
执行如下命令修改配置项。
alter proxyconfig set obproxy_read_consistency = 1;该配置项取值为 0 和 1。默认为 0,表示强读(读请求需要读到最新的数据);取值为 1 表示弱读(读请求不要求读到最新的数据)。
修改路由策略
ODP 通过配置项 proxy_route_policy 修改路由策略,通过设置配置项值为 follower_first 和 follower_only 控制弱读请求的路由。这两个值的含义如下,您需根据具体业务场景选择对应策略。
follower_first:弱读请求优先路由到备副本,如果备副本都不可用,弱读请求路由到主副本。
follower_only:弱读请求路由到备副本,如果备副本都不可用,断开和客户端的连接。