OceanBase学习之路40|如何将资源池分配给租户?

资源池创建成功后,您可以在创建租户时将资源池分配给租户,也可以在修改资源池列表时,将未使用的资源池分配给租户。

创建租户时分配资源池

创建租户时,您可以将未使用的资源池分配给租户, SQL 语句示例如下:

obclient> CREATE TENANT IF NOT EXISTS test_tenant charset='utf8mb4', replica_num=3, zone_list=('zone1','zone2','zone3'), primary_zone='zone1;zone2,zone3', resource_pool_list=('pool1');

其中:

  • 每个资源池仅能绑定给一个租户,并且在创建租户时,一个租户仅支持指定一个资源池。

  • 租户在 Zone 内被分配的所有资源总量为:Unit 规格 * Unit 数量。

创建租户的更多信息请参见  新建租户

修改租户资源池列表时分配资源池

您也可以通过  ALTER TENANT 命令将未使用的资源池分配给租户,对应的 SQL 语法如下:

ALTER TENANT tenant_name RESOURCE_POOL_LIST [=](pool_name [, pool_name...]) ;

语句使用说明:

  • 该语句仅支持由  sys 租户的管理员执行。

  • 对于  RESOURCE_POOL_LIST,一次仅支持添加或删除一个资源池。

  • 为租户添加资源池时,待添加的资源池与现有资源池所分布的 Zone 不能有交集。

通过修改租户资源列表的方式为租户添加资源池通常使用在租户副本数升级的场景中。

示例背景

假设集群中当前仅有  z1z2z3 三个 Zone,且三个 Zone 都属于同一个 Region,每个 Zone 内一台 OBServer。集群中有一个普通租户  tenant1,当前副本分布情况  locality='F@z1,F@z2,F@z3', resource_pool_list=('pool1');,根据业务需要,需要将租户  tenant1 由三副本调整为五副本,即租户的 Locality 由  F@z1,F@z2,F@z3 变为  F@z1,F@z2,F@z3,F@z4,F@z5

示例操作

  1. 集群中当前仅  z1z2z3 三个 Zone,需要在集群中增加  z4z5 两个 Zone。

    在集群中增加 Zone 的具体操作请参见  增加或删除 Zone

  2. 在  z4z5 两个 Zone 上各添加一台 OBServer。

    向 Zone 内添加 OBServer 的具体操作请参见  添加 OBServer

  3. 使用  root 用户登录  sys 租户,为租户  tenant1 在  z4z5 上添加资源。

    1. 添加资源需要先有可用的资源单元和资源池。

      obclient>CREATE RESOURCE UNIT unit2 MAX_CPU 1, MIN_CPU 1, MEMORY_SIZE '5G', MAX_IOPS 1024, MIN_IOPS 1024, IOPS_WEIGHT 0,LOG_DISK_SIZE '2G';
      obclient>CREATE RESOURCE POOL pool2 unit = 'unit2', unit_num = 1, zone_list=('z4','z5');
    2. 完成后,为租户在  z4z5 上添加资源。

      obclient>ALTER TENANT tenant1 RESOURCE_POOL_LIST =('pool1', 'pool2') ;
  4. 通过修改租户 Locality 来增加副本。

    根据 Locality 的变更规则,每次只能增加一个 Zone 内的 Locality,Locality 的变更规则相关信息请参见  Locality 概述

    obclient>ALTER TENANT tenant1 LOCALITY='F@z1,F@z2,F@z3,F@z4';
    obclient>ALTER TENANT tenant1 LOCALITY='F@z1,F@z2,F@z3,F@z4,F@z5';


请使用浏览器的分享功能分享到微信等