关于租户的replica_num,zone_list,primary_zone的疑问

【产品名称】ob

【产品版本】3.1.2

【问题描述】

CREATE TENANT IF NOT EXISTS test_tenant charset=‘utf8mb4’, replica_num=3, zone_list=(‘zone1’,‘zone2’,‘zone3’), primary_zone=‘RANDOM’, resource_pool_list=(‘pool1’)

想问一下,对于上面创建租户的命令,replica_num这个一定要跟zone的个数保持一致吗?如果可以不保持一致,比如该值设置为1,zone_list为三个zone,primary_zone指定了三个以,分隔的,这样的话我的数据就一份数据,会分布在三个zone上?怎么保证高可用的?另外关于resource pool中的unit_num也有一些问题:如果unit_num=3,租户得到的资源就是3*unit*zone的个数吗?这里不理解,因为不同的场景,可能设置的不一样,还请解答一下。

replica_num 不要求一定跟zone_list保持一直。这个字段的意思是说一个数据有几个副本。如果设置为1,那就只有一个副本。replica_num 跟数据均衡是没有关系的,但是replica_num 变大,会占用更多的资源。

replica_num=1是没办法保证高可用的,一旦对应的主机故障,它的数据没有其它的副本,也就没有办法提供对应数据的服务了。OB是使用paxos协议支持高可用、数据一致性功能的,所以replica_num=3已经是最低的建议值。

replica 在OB中是数据副本。unit 在OB中,是“资源”分配的基本单位。unit_num 的意思是在某一个zone中可以有几个资源单位。在OBCA的资料中找到的“所以这个“Unit 数量=N”的意思是各个Zone 内分配N 个资源”。所以这句话是对的:如果unit_num=3,租户得到的资源就是3*unit*zone的个数吗?


嗯呢,有没有相关的SQL可以查询我的数据具体是怎么分布的?

系统租户可以看这个表 select * from oceanbase.__all_unit;  看到所有的unit 分布