首批通过分布式安全可靠测评,为关键业务系统打造
通过修改 unit_config 实现租户扩缩容
更新时间:2026-06-24 19:30:47
对租户内资源的扩容和缩容可以通过修改 unit_config 即租户的资源单元配置来实现。
修改租户的 unit_config 可以通过 SQL 语句和 OCP 平台两种方式来完成。
前提条件
在进行租户的扩容和缩容操作前,需要进行以下操作:
由于空闲的资源池会被计算为占用的资源,故在扩容前,如果有租户被删除,建议与租户对应的资源池也一并删除,以便释放资源。
删除资源池的相关操作请参见 删除资源池。
进行租户缩容前,建议进行一轮转储以便释放租户正在使用的内存。
手动触发转储的相关操作请参见 手动触发转储。
查看集群中资源的分配情况,了解集群中资源的使用情况。
查看集群节点的资源总量和分配状态的相关操作请参见 查看集群的资源信息。
通过 SQL 语句修改租户的资源单元配置
在通过调大和调小租户资源单元的配置进行扩容和缩容时,有以下两种场景:
当前租户配置了独立的资源单元配置,可以直接修改租户的资源单元配置。
多个租户使用了相同的资源单元配置,需要切换租户的资源单元配置。
以下将通过这两种场景提供租户扩容和缩容的操作指导。
注意事项
在调大资源规格时,无论是通过修改资源配置还是切换资源配置,调整后的资源总量都必须满足以下要求:
Sum(min_cpu) <= CPU_CAPACITY;
Sum(min_memory) <= MEM_CAPACITY;
Sum(max_cpu) <= CPU_CAPACITY * resource_hard_limit;
Sum(max_mem) <= MEM_CAPACITY * resource_hard_limit;
否则,系统会报错,提示扩容失败。
其中:
CPU_CAPACITY:表示 CPU 总的容量。MEM_CAPACITY:表示内存总的容量。resource_hard_limit:是一个配置项的值。在分配 Unit 时,系统会根据配置项
resource_hard_limit的值来决定资源是否允许超卖。该配置项的默认值为100,表示不允许超卖,取值范围为 [100, 10000]。例如,如果该配置项的值设置为resource_hard_limit=200则表示允许超卖成 2 倍。更多配置项
resource_hard_limit的说明信息请参见 resource_hard_limit。
背景信息
假设当前集群中共包含 3 个可用区 z1、z2、z3,每个 Zone 内包含 3 台 OBServer。集群中有一个普通租户 tenant1,其资源分配情况如下:
obclient> CREATE RESOURCE UNIT unit1 MAX_CPU 6,MAX_MEMORY '36G',MAX_IOPS 128, MAX_DISK_SIZE '2T', MAX_SESSION_NUM 64, MIN_CPU 6, MIN_MEMORY '36G', MIN_IOPS 128;
obclient> CREATE RESOURCE POOL pool1 UNIT 'unit1', UNIT_NUM 2, ZONE_LIST ('z1','z2','z3');
obclient>CREATE TENANT tenant1 resource_pool_list=('pool1');
租户配置了独立的资源单元配置的场景
如果当前租户配置了独立的资源单元配置,您可以直接通过修改租户的 unit_config 来完成租户的扩容和缩容。
方法如下:
使用
root用户登录数据库的sys租户。进入
oceanbase数据库。obclient>USE oceanbase;执行以下语句,获取租户的资源配置信息。
obclient>SELECT * FROM gv$unit;根据查询结果,找到当前租户对应的所有资源池信息及 unit_config 信息。
根据获取的资源单元配置信息,修改
unit1的配置。调大 unit1 的配置
注意
OceanBase 数据库当前版本仅严格限制了内存和 CPU,未对磁盘空间和连接数进行严格的租户隔离。
内存和 CPU 的最大和最小值在设计上满足最小值。即在高并发场景中,保证满足租户的最小设定值。建议设置相同的最大和最小值。
obclient> ALTER RESOURCE UNIT unit1 MAX_CPU 8, MAX_MEMORY '40G', MAX_IOPS 128, MAX_DISK_SIZE '10G', MAX_SESSION_NUM 64, MIN_CPU=8, MIN_MEMORY='40G', MIN_IOPS=128;调小
unit1的配置obclient> ALTER RESOURCE UNIT unit1 MAX_CPU 5, MAX_MEMORY '20G', MAX_IOPS 128, MAX_DISK_SIZE '10G', MAX_SESSION_NUM 64, MIN_CPU=5, MIN_MEMORY='20G', MIN_IOPS=128;
多个租户使用了相同的资源单元配置的场景
如果多个租户共用了同一个资源单元配置模版,则不能通过简单的调大资源单元配置来实现租户的扩容和缩容。因为一旦修改,将导致使用相同资源单元配置模版的所有租户同时进行了扩容或缩容。
此场景下,需要先创建独立的资源单元配置后,再为租户切换资源单元配置。
例如,待扩容或缩容的租户为 tenant1,但由于 tenant1、tenant2 均使用了 unit1 作为资源单元配置,因此需要创建一个新的资源单元。
使用
root用户登录数据库的sys租户。进入
oceanbase数据库。创建一个独立的资源单元配置。
其中,
unit2为新建的资源单元的名称,名称需要保证全局唯一。创建比当前资源单元配置高的
unit2obclient> CREATE RESOURCE UNIT unit2 MAX_CPU 8, MAX_MEMORY '40G', MAX_IOPS 128, MAX_DISK_SIZE '10G', MAX_SESSION_NUM 64, MIN_CPU=8, MIN_MEMORY='40G', MIN_IOPS=128;创建比当前资源单元配置低的
unit3obclient> CREATE RESOURCE UNIT unit3 MAX_CPU 5, MAX_MEMORY '20G', MAX_IOPS 128, MAX_DISK_SIZE '10G', MAX_SESSION_NUM 64, MIN_CPU=5, MIN_MEMORY='20G', MIN_IOPS=128;
修改租户的资源池,将资源池的资源单元配置替换为刚刚新创建的 Unit。
其中,
unit2和unit3为刚刚新创建的 Unit。obclient> ALTER RESOURCE POOL pool1 unit='unit2'; obclient> ALTER RESOURCE POOL pool1 unit='unit3';
后续处理
操作结束后,您可以通过 gv$unit 视图,确认当前租户的 unit_config 是否修改成功。
obclient> SELECT * FROM oceanbase.gv$unit
更多 gv$unit 视图的字段及说明信息请参见 gv$unit。
通过 OCP 修改租户的 Unit 规格
您也可以在 OCP 上通过调大或调小租户的 Unit 规格来进行租户的扩容和缩容。
使用了自定义的 Unit 规格或当前租户使用了独立的 Unit 规格的场景
在 OCP 中,如果您使用了自定义的 Unit 规格或者当前租户配置了独立的 Unit 规格,您可以直接通过修改当前 Unit 规格的方式来进行租户的扩容和缩容。
说明
对于使用了自定义的 Unit 规格且被该 Unit 规格被多个租户使用的场景,具体修改操作请参考 使用了系统内置的 Unit 规格或多个租户使用了相同的 Unit 规格的场景。
具体操作如下:
登录 OCP。
在左侧导航栏上,单击 租户 。
在页面右上角,单击 Unit 规格管理 ,进入 Unit 规格管理 页面。
在 规格类型 为 自定义 的 Unit 规格中,找到待修改的 Unit 规格,并在对应的 操作 列中,单击 编辑 。
修改 CPU 和内存的范围,单击 确定 。

使用了系统内置的 Unit 规格或多个租户使用了相同的 Unit 规格的场景
在 OCP 中,如果您使用了系统内置的 Unit 规格或者多个租户共用了同一个资源单元配置模版,则需要通过替换 Unit 规格的方式来进行租户的扩容和缩容。
具体操作如下:
登录 OCP。
在左侧导航栏上,单击 租户 。
在 租户列表 中,找到待查看的租户,单击租户名。
在 总览 页面的 副本详情 区域,找到待修改资源配置的 Zone,在对应的 操作 列中,单击 编辑 。
在 Unit 规格 对应的列中,重新选择新的 Unit 规格。
您可以选择系统内置的 Unit 规格,也可以自定义 Unit 规格,系统内置的 Unit 规格对应的具体配置请参见 OCP 对应版本的《用户指南》文档。
完成后,单击 确定 。
更多信息
在租户的扩容和缩容操作中,您可以借助以下内部表或视图来获取租户资源相关的信息:
内部表
oceanbase.__all_unit_config内部表
oceanbase.__all_unit_config记录了当前集群中的所有 unit_config 信息。示例:
obclient> SELECT * FROM oceanbase.__all_unit_config; +----------------------------+----------------------------+----------------+-----------------------------+---------+---------+-------------+-------------+----------+----------+---------------+---------------------+ | gmt_create | gmt_modified | unit_config_id | name | max_cpu | min_cpu | max_memory | min_memory | max_iops | min_iops | max_disk_size | max_session_num | +----------------------------+----------------------------+----------------+-----------------------------+---------+---------+-------------+-------------+----------+----------+---------------+---------------------+ | 2021-11-11 14:29:24.847092 | 2021-11-11 14:29:24.847092 | 1 | sys_unit_config | 5 | 2.5 | 16106127360 | 12884901888 | 10000 | 5000 | 179593805824 | 9223372036854775807 | | 2021-11-11 14:43:01.449090 | 2021-11-11 14:43:01.449090 | 1002 | config_Oracle_zone1_S1_rhf | 1.5 | 1.5 | 6442450944 | 6442450944 | 1250 | 1250 | 536870912000 | 375 | | 2021-11-15 11:25:48.371781 | 2021-11-15 11:25:48.371781 | 1003 | config_MySQL_zone1_S1_zlz | 1.5 | 1.5 | 6442450944 | 6442450944 | 1250 | 1250 | 536870912000 | 375 | | 2021-11-15 11:26:38.979746 | 2021-11-15 11:26:38.979746 | 1004 | config_MySQL1_zone1_S1_cey | 1.5 | 1.5 | 6442450944 | 6442450944 | 1250 | 1250 | 536870912000 | 375 | | 2021-11-15 11:27:09.347510 | 2021-11-15 11:27:09.347510 | 1005 | config_MySQL2_zone1_S1_ydf | 1.5 | 1.5 | 6442450944 | 6442450944 | 1250 | 1250 | 536870912000 | 375 | | 2021-11-15 11:27:42.442706 | 2021-11-15 11:27:42.442706 | 1006 | config_Oracle1_zone1_S1_dfl | 1.5 | 1.5 | 6442450944 | 6442450944 | 1250 | 1250 | 536870912000 | 375 | | 2021-11-17 14:29:09.458317 | 2021-11-17 14:29:09.458317 | 1022 | unit1 | 5 | 5 | 38654705664 | 34359738368 | 128 | 128 | 2199023255552 | 64 | +----------------------------+----------------------------+----------------+-----------------------------+---------+---------+-------------+-------------+----------+----------+---------------+---------------------+ 7 rows in set视图
gv$unitgv$unit视图中记录了集群中所有租户的资源分配情况。查询示例如下:
obclient> SELECT * FROM oceanbase.gv$unit; +---------+----------------+-----------------------------+------------------+------------------------+-------+-----------+-------------+----------------+----------+---------------------+-----------------------+---------+---------+-------------+-------------+----------+----------+---------------+---------------------+ | unit_id | unit_config_id | unit_config_name | resource_pool_id | resource_pool_name | zone | tenant_id | tenant_name | svr_ip | svr_port | migrate_from_svr_ip | migrate_from_svr_port | max_cpu | min_cpu | max_memory | min_memory | max_iops | min_iops | max_disk_size | max_session_num | +---------+----------------+-----------------------------+------------------+------------------------+-------+-----------+-------------+----------------+----------+---------------------+-----------------------+---------+---------+-------------+-------------+----------+----------+---------------+---------------------+ | 1 | 1 | sys_unit_config | 1 | sys_pool | zone1 | 1 | sys | xxx.xx.xxx.xxx | 2882 | | 0 | 5 | 2.5 | 16106127360 | 12884901888 | 10000 | 5000 | 179593805824 | 9223372036854775807 | | 1002 | 1002 | config_Oracle_zone1_S1_rhf | 1002 | pool_Oracle_zone1_rhf | zone1 | 1002 | Oracle | xxx.xx.xxx.xxx | 2882 | | 0 | 1.5 | 1.5 | 6442450944 | 6442450944 | 1250 | 1250 | 536870912000 | 375 | | 1003 | 1003 | config_MySQL_zone1_S1_zlz | 1003 | pool_MySQL_zone1_zlz | zone1 | 1003 | MySQL | xxx.xx.xxx.xxx | 2882 | | 0 | 1.5 | 1.5 | 6442450944 | 6442450944 | 1250 | 1250 | 536870912000 | 375 | | 1004 | 1004 | config_MySQL1_zone1_S1_cey | 1004 | pool_MySQL1_zone1_cey | zone1 | 1004 | MySQL1 | xxx.xx.xxx.xxx | 2882 | | 0 | 1.5 | 1.5 | 6442450944 | 6442450944 | 1250 | 1250 | 536870912000 | 375 | | 1005 | 1005 | config_MySQL2_zone1_S1_ydf | 1005 | pool_MySQL2_zone1_ydf | zone1 | 1005 | MySQL2 | xxx.xx.xxx.xxx | 2882 | | 0 | 1.5 | 1.5 | 6442450944 | 6442450944 | 1250 | 1250 | 536870912000 | 375 | | 1006 | 1006 | config_Oracle1_zone1_S1_dfl | 1006 | pool_Oracle1_zone1_dfl | zone1 | 1006 | Oracle1 | xxx.xx.xxx.xxx | 2882 | | 0 | 1.5 | 1.5 | 6442450944 | 6442450944 | 1250 | 1250 | 536870912000 | 375 | +---------+----------------+-----------------------------+------------------+------------------------+-------+-----------+-------------+----------------+----------+---------------------+-----------------------+---------+---------+-------------+-------------+----------+----------+---------------+---------------------+内部表
oceanbase.__all_resource_pool内部表
oceanbase.__all_resource_pool中记录了当前集群中所有资源池的资源配置情况。其中,unit_count表示资源池中某个资源单元的个数。查询示例如下:
obclient> select * from oceanbase.__all_resource_pool; +----------------------------+----------------------------+------------------+------------------------+------------+----------------+-------------+-----------+--------------+--------------------+ | gmt_create | gmt_modified | resource_pool_id | name | unit_count | unit_config_id | zone_list | tenant_id | replica_type | is_tenant_sys_pool | +----------------------------+----------------------------+------------------+------------------------+------------+----------------+-------------+-----------+--------------+--------------------+ | 2021-11-11 14:29:24.849909 | 2021-11-11 14:29:24.854242 | 1 | sys_pool | 1 | 1 | zone1 | 1 | 0 | 0 | | 2021-11-11 14:43:01.455415 | 2021-11-11 14:43:01.466884 | 1002 | pool_Oracle_zone1_rhf | 1 | 1002 | zone1 | 1002 | 0 | 0 | | 2021-11-15 11:25:48.384105 | 2021-11-15 11:25:48.406186 | 1003 | pool_MySQL_zone1_zlz | 1 | 1003 | zone1 | 1003 | 0 | 0 | | 2021-11-15 11:26:38.986014 | 2021-11-15 11:26:38.997594 | 1004 | pool_MySQL1_zone1_cey | 1 | 1004 | zone1 | 1004 | 0 | 0 | | 2021-11-15 11:27:42.454288 | 2021-11-15 11:27:42.467915 | 1006 | pool_Oracle1_zone1_dfl | 1 | 1006 | zone1 | 1006 | 0 | 0 | | 2021-11-17 14:38:03.945051 | 2021-11-17 14:38:03.945051 | 1022 | zyc_1117 | 1 | 1023 | zone1;zone2 | -1 | 0 | 0 | +----------------------------+----------------------------+------------------+------------------------+------------+----------------+-------------+-----------+--------------+--------------------+ 6 rows in set