OB双节点 tbl4 Leader全在zone1,zone2只读无法成为Leader

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

  1. 问题现象

我搭建了 OceanBase 双节点集群(2 台机器),配置如下:

  • zone1:192.168.20.99:2882(ACTIVE)
  • zone2:192.168.20.100:2882(ACTIVE)已为 sys 租户设置 locality = "FULL{1}@zone1, FULL{1}@zone2",并新建了分区表 tbl4(2 个分区 p0/p1)。但查询表分区位置发现:所有分区的 Leader 均固定在 zone1(192.168.20.99),zone2(192.168.20.100)仅为 READONLY Follower,未出现 Leader 分布在 zone2 的情况,不符合预期。

创建分区表SQL:
CREATE TABLE tbl4 (c1 INT, c2 INT) PARTITION BY HASH(c1) PARTITIONS 2;

  1. 关键环境 / 配置信息
  1. 疑问点
    我已将租户 Locality 设置为 F@zone1, F@zone2(实际查询为 FULL {1}@zone1/zone2),预期分区 Leader 应在 zone1/zone2 节点均衡分布,但实际所有 Leader 均在 zone1,zone2 仅为 Readonly Follower。

如何才能让分区Leader在zone1和zone2节点上均衡分布呢?
补充说明:我之前做过测试,当集群有4台机器、设置UNIT_NUM=2时,是可以正常打散数据、实现Leader均衡分布的。但我始终想不明白,为什么集群是1-1(双节点)或1-1-1(三节点)架构、设置UNIT_NUM=1时,就无法实现数据和Leader的均衡分布?难道在UNIT_NUM=1的情况下,数据和Leader就只能集中在一台机器上,无法在多个节点间均衡分配吗?

2 个赞

分区leader分布是跟随日志流leader的,这种现象说明分区表的两个分区leader在同一个日志流中

感谢您的回复。
根据官方介绍,LS 数量 = UNIT_NUM × first_level_primary_zone_num。
我已经执行:
ALTER TENANT sys set PRIMARY_ZONE = “zone1,zone2”;
按公式计算,LS 数量应该是 1 × 2 = 2。
但查询表位置时,结果如下:

可以看到,tbl4 的所有分区 p0/p1/p2/p3 的 LEADER 全部集中在 zone1 的同一台节点上,并没有像预期那样分散到两个 LS 上。
想请教一下这是什么原因?

不要使用sys租户进行测试,sys只有一个日志流
业务租户假设日志流为1001 1002
这种情况相当于表的所有分区都在1001日志流中。可以再观察观察,分区均衡任务是有间隔的
partition_balance_schedule_interval

建一个用户租户试下,不要用sys租户

可以了,谢谢各位,十分感谢。