求教:OceanBase两节点集群,如何设置主Zone策略避免报表查询影响业务更新?

现在有一个Oceanbase集群,两台服务器。部署方式为两个zone,每个zone有一个server。主zone配置为:zone1,zone2,即zone1和zone2的优先级相同同时提供读写服务。根据DBA_OB_TABLE_LOCATIONS的结果也确认了所有数据表的LEADER被均匀分布在两个zone上。
现在运行期间发生了一些问题,因为我们是ERP系统,有非常多的报表查询,并且报表的SQL语句比较复杂,有些报表将近10分钟才能查询出结果,表现形式就是CPU过高,在这期间发生了其他表的单表更新操作都会超时
当然解决办法有以下几种:

  1. 调整报表查询语句,优化SQL语句,减少查询时间。
  2. 增加集群的资源,如增加CPU、内存、磁盘等。
  3. 调整表的分布策略,如调整表的分片数、副本数等。

但是现在我想知道是否可以将集群调整为zone1提供读写,zone2只提供只读服务。zone2单独为报表服务,期望达到的效果就是报表查询不影响任何表都更新操作,所有的业务操作都在zone1进行,而报表查询则在zone2进行。两个zone不因各自的负荷而相互影响。

想要达到这个效果是要把租户的PRIMARY_ZONE改为zone1;zone2吗?按文档描述这样标识优先由zone1提供读写服务,这个【优先】什么时候会轮到zone2来写,zone1故障不可用还是负荷达到一定程度,还是有其他的配置方式可以实现这个需求?谢谢。
我们现在都需求是不是业务系统连接zone1的2881,报表系统连接zone2的2881?然后搭配主zone策略:zone1;zone2,这样调整后对现有表LEADER分布会进行一次重新自动分配麽?

Oceanbase版本:
OceanBase_CE 4.3.5.1 (r101000042025031818-b6d5706eb3d2c5f501c7fa646ddbf32f3dc87069) (Built Mar 18 2025 18:12:30)

1 个赞

1.需要设置弱读变量,ob_read_consistency=‘WEAK’
2.sql级别设置弱读。select /+READ_CONSISTENCY(WEAK)/ * from t1;

1 个赞

666

不用调整租户的PRIMARY_ZONE麽。 这样的话读写是不是还是在两个zone上同时进行?

1 个赞

设置zone1为leader副本zone2为fllow副本即可。可以了解学习下下面这篇博客
https://open.oceanbase.com/blog/14869895524

1 个赞