---
title: "通过修改 UNIT_NUM 实现租户扩缩容 | OceanBase 文档中心"
description: 通过修改 UNIT_NUM 实现租户扩缩容 对租户内资源的扩容和缩容还可以通过修改资源池中的 UNIT_NUM 来实现。 前提条件 在进行租户的扩容和缩容操作前，需要进行以下操作： 由于空闲的资源池会被计算为占用的资源，故在扩容前，如果有租户被删除，建议与租户对应的资源池也一并删除，以便释放资源。 删除资源池的相关操…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 3.2.3 企业版 LTS

# 通过修改 UNIT_NUM 实现租户扩缩容

更新时间：2023-07-26 14:15:56

对租户内资源的扩容和缩容还可以通过修改资源池中的 `UNIT_NUM` 来实现。

## 前提条件

在进行租户的扩容和缩容操作前，需要进行以下操作：

- 由于空闲的资源池会被计算为占用的资源，故在扩容前，如果有租户被删除，建议与租户对应的资源池也一并删除，以便释放资源。

  删除资源池的相关操作请参见 [删除资源池](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000355774)。
 - 进行租户缩容前，建议进行一轮转储以便释放租户正在使用的内存。

  手动触发转储的相关操作请参见 [手动触发转储](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000355956)。
 - 查看集群中资源的分配情况，了解集群中资源的使用情况。

  查看集群节点的资源总量和分配状态的相关操作请参见 [查看集群的资源信息](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000355577)。

修改资源池的 UNIT_NUM 可以通过 SQL 语句和 OCP 平台两种方式来完成。

> **注意**
>
>  
>
> 修改资源池的 UNIT_NUM 时，修改后的 UNIT_NUM 数量要小于或等于 Zone 内可用的 OBServer 数量。

## 通过 SQL 语句修改租户的 UNIT_NUM

您可以通过调大或调小租户的 `UNIT_NUM` 来进行租户的扩容或缩容。

### 背景信息

假设当前集群中共包含 3 个可用区 `z1`、`z2`、`z3`，每个 Zone 内包含 3 台 OBServer。集群中有一个普通租户 `tenant1`，其资源分配情况如下：

```sql
obclient> CREATE RESOURCE UNIT unit1 MAX_CPU 6,MIN_CPU 6, MAX_MEMORY '36G', MIN_MEMORY '36G', MAX_IOPS 128, MIN_IOPS 128, MAX_DISK_SIZE '2T', MAX_SESSION_NUM 64;

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` 来提高租户的服务能力，以满足新的业务需求。

1. 使用 `root` 用户登录到数据库的 `sys` 租户。
 2. 进入 `oceanbase` 数据库。

   ```sql
   obclient>USE oceanbase;

   ```
 3. 查询 `oceanbase.gv$unit` 视图，获取当前租户中的资源配置信息。

   ```sql
   obclient> SELECT * FROM oceanbase.gv$unit;

   ```

   更多 `gv$unit` 视图的字段及说明信息请参见 [gv$unit](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000356349)。
 4. 执行以下语句，调大 `UNIT_NUM` 的数量。

   > **说明**
   >
   >  
   >
   > 不支持通过指定 `unit_id` 的方式调大 `UNIT_NUM` 的数量。

   ```sql
   obclient>ALTER RESOURCE POOL pool1 UNIT_NUM = 3;

   ```

   语句执行后，系统会直接在每个 Zone 内添加一个 Unit。

### 调小 UNIT_NUM

调小 `UNIT_NUM` 实际就是删除资源单元，由于被删除的资源单元上可能存在对应租户的数据，因此，在执行删除资源单元的语句成功返回后，系统还需要将租户数据从被删除的资源单元上迁移出去。具体表现为，OceanBase 数据库会将本次删除资源单元的操作记录到 `__all_rootservice_job` 内部表中，查询该表可以观察本次资源单元的删除进度。

`UNIT_NUM` 被调小后，即将被删除的资源单元会被标记为 `DELETING` 状态，可以通过查询 `__all_unit` 表的 `status` 列来获取资源单元的状态。当租户数据从被删除资源单元全部迁移后，OceanBase 数据库会更新 `__all_rootservice_job` 表，标记本次删除资源单元的任务完成，同时清理 `__all_unit` 表，将处于 `DELETING` 状态的资源单元删除。

具体操作如下：

   ```
 4. 执行以下语句，调小 `UNIT_NUM` 的数量。

      - 通过不指定 `unit_id` 的方式调小 `UNIT_NUM` 的数量

       ```sql
       obclient>ALTER RESOURCE POOL pool1 UNIT_NUM = 1;

       ```

       语句执行后，系统会自动在每个 Zone 内选取 1 个资源单元进行删除。
      - 通过指定 `unit_id` 调小 `UNIT_NUM` 的数量

       其中，`1001`、`1003` 、`1005` 表示待调小的 Unit 的 `unit_id`。

       ```sql
       obclient> ALTER RESOURCE POOL pool1 UNIT_NUM 1 DELETE UNIT = (1001, 1003,1005);

       ```

       语句执行后，系统会直接删除指定的资源单元。

## 通过 OCP 修改租户资源池中的 Unit 数量

您也可以在 OCP 上修改租户所使用的资源池中的 `UNIT_NUM` 即 Unit 数量来完成租户资源的扩容和缩容。

1. 登录 OCP。
 2. 在左侧导航栏上，单击 **租户** 。
 3. 在 **租户列表** 中，找到待查看的租户，单击租户名。
 4. 在 **总览** 页面的 **副本详情** 区域，找到待修改资源配置的 Zone，在对应的 **操作** 列中，单击 **编辑** 。
 5. 在 **Unit 数量** 对应的列中，调大或调小 Unit 的个数。
 6. 完成后，单击 **确定** 。

## 更多信息

在租户的扩容和缩容操作中，您可以借助以下内部表或视图来获取租户资源相关的信息：

- 内部表 `oceanbase.__all_unit_config`

  内部表 `oceanbase.__all_unit_config` 记录了当前集群中的所有 unit_config 信息。

  示例：

  ```sql
  obclient> SELECT * FROM __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$unit`

  `gv$unit` 视图中记录了集群中所有租户的资源分配情况。

  查询示例如下：

  ```sql
  obclient> SELECT * FROM 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         |  xx.xx.xx.xx |     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      |  xx.xx.xx.xx |     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       |  xx.xx.xx.xx |     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      |  xx.xx.xx.xx |     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      |  xx.xx.xx.xx |     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     |  xx.xx.xx.xx |     2882 |                     |                     0 |     1.5 |     1.5 |  6442450944 |  6442450944 |     1250 |     1250 |  536870912000 |                 375 |
  +---------+----------------+-----------------------------+------------------+------------------------+-------+-----------+-------------+----------------+----------+---------------------+-----------------------+---------+---------+-------------+-------------+----------+----------+---------------+---------------------+

  ```
 - 内部表 `oceanbase.__all_resource_pool`

  内部表 `oceanbase.__all_resource_pool` 中记录了当前集群中所有资源池的资源配置情况。其中，`unit_count` 表示资源池中某个资源单元的个数。

  查询示例如下：

  ```sql
  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

  ```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
