首批通过分布式安全可靠测评,为关键业务系统打造
通过修改 UNIT_NUM 实现租户扩缩容
更新时间:2026-07-03 11:53:29
对租户内资源的扩容还可以通过调大资源池中的 UNIT_NUM 来实现。当前暂不支持通过调小资源池中的 UNIT_NUM 来进行缩容。
前提条件
在进行租户的扩容操作前,需要进行以下操作:
由于空闲的资源池会被计算为占用的资源,故在扩容前,如果有租户被删除,建议与租户对应的资源池也一并删除,以便释放资源。
删除资源池的相关操作请参见 删除资源池。
查看集群中资源的分配情况,了解集群中资源的使用情况。
查看集群节点的资源总量和分配状态的相关操作请参见 查看集群的资源信息。
注意
调大资源池的
UNIT_NUM时,修改后的UNIT_NUM数量要小于或等于 Zone 内可用的 OBServer 数量。
修改租户的 UNIT_NUM
您可以通过调大租户的 UNIT_NUM 来进行租户的扩容。
背景信息
假设当前集群中共包含 3 个可用区 z1、z2、z3,每个 Zone 内包含 3 台 OBServer。集群中有一个普通租户 tenant1,其资源分配情况如下:
obclient> CREATE RESOURCE UNIT unit1 MAX_CPU 6, MIN_CPU 6, MEMORY_SIZE '36G', MAX_IOPS 1024, MIN_IOPS 1024, IOPS_WEIGHT=0, LOG_DISK_SIZE '2G';
obclient> CREATE RESOURCE POOL pool1 UNIT 'unit1', UNIT_NUM 2, ZONE_LIST ('z1','z2','z3');
obclient> CREATE TENANT tenant1 resource_pool_list=('pool1');
调大 UNIT_NUM
随着业务量的不断变大,每个 Zone 上 2 个资源单元已经无法承载当前的业务量,因此需要考虑调大 UNIT_NUM 来提高租户的服务能力,以满足新的业务需求。
使用
root用户登录到数据库的sys租户。进入
oceanbase数据库。obclient>USE oceanbase;执行以下语句,获取当前租户的资源配置信息。
obclient> SELECT a.TENANT_NAME, b.RESOURCE_POOL_ID,b.NAME resource_pool_name,b.UNIT_CONFIG_ID,b. UNIT_COUNT FROM oceanbase.DBA_OB_TENANTS a,oceanbase.DBA_OB_RESOURCE_POOLS b WHERE b.TENANT_ID=a.TENANT_ID; +-------------+------------------+--------------------+----------------+------------+ | TENANT_NAME | RESOURCE_POOL_ID | resource_pool_name | UNIT_CONFIG_ID | UNIT_COUNT | +-------------+------------------+--------------------+----------------+------------+ | sys | 1 | sys_pool | 1 | 1 | | MySQL | 1001 | pool1 | 1001 | 2 | | Oracle | 1002 | pool002 | 1002 | 2 | +-------------+------------------+--------------------+----------------+------------+ 3 rows in set obclient> SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS WHERE UNIT_CONFIG_ID='1001'; +----------------+-------+---------+---------+-------------+---------------+----------+----------+-------------+ | UNIT_CONFIG_ID | NAME | MAX_CPU | MIN_CPU | MEMORY_SIZE | LOG_DISK_SIZE | MAX_IOPS | MIN_IOPS | IOPS_WEIGHT | +----------------+-------+---------+---------+-------------+---------------+----------+----------+-------------+ | 1001 | unit1 | 6 | 6 | 38654705664 | 2147483648 | 1024 | 1024 | 0 | +----------------+-------+---------+---------+-------------+---------------+----------+----------+-------------+ 1 row in set其中,
UNIT_COUNT表示当前租户所分配的UNIT_NUM。执行以下语句,调大
UNIT_NUM的数量。说明
不支持通过指定
unit_id的方式调大UNIT_NUM的数量。obclient> ALTER RESOURCE TENANT tenant1 UNIT_NUM = 3;语句执行后,系统会直接在每个 Zone 内添加一个 Unit。