现在有一个Oceanbase集群,两台服务器。部署方式为两个zone,每个zone有一个server。主zone配置为:zone1,zone2,即zone1和zone2的优先级相同同时提供读写服务。根据DBA_OB_TABLE_LOCATIONS的结果也确认了所有数据表的LEADER被均匀分布在两个zone上。
现在运行期间发生了一些问题,因为我们是ERP系统,有非常多的报表查询,并且报表的SQL语句比较复杂,有些报表将近10分钟才能查询出结果,表现形式就是CPU过高,在这期间发生了其他表的单表更新操作都会超时
当然解决办法有以下几种:
- 调整报表查询语句,优化SQL语句,减少查询时间。
- 增加集群的资源,如增加CPU、内存、磁盘等。
- 调整表的分布策略,如调整表的分片数、副本数等。
但是现在我想知道是否可以将集群调整为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)