---
title: "租户管理 | OceanBase 文档中心"
description: 租户管理 本节主要介绍主备库配置场景下，租户管理相关的一些注意事项。 在 OceanBase 数据库中，系统租户可以对普通租户进行管理。主备集群之间的系统租户是相互独立的，不会物理同步数据，但是备集群会感知主集群普通租户的变化，保证同步所有普通租户的数据。备集群从主集群的系统租户逻辑同步的租户管理操作包括创建租户、删…
---
切换语言

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

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

# 租户管理

更新时间：2023-07-19 13:03:07

本节主要介绍主备库配置场景下，租户管理相关的一些注意事项。

在 OceanBase 数据库中，系统租户可以对普通租户进行管理。主备集群之间的系统租户是相互独立的，不会物理同步数据，但是备集群会感知主集群普通租户的变化，保证同步所有普通租户的数据。备集群从主集群的系统租户逻辑同步的租户管理操作包括创建租户、删除租户和重命名租户。

备集群也支持独立进行部分的租户管理操作，当前支持在主备集群上独立运维的租户管理操作如下：

- 管理租户的资源配置
 - 管理租户的资源池
 - 管理租户的 Locality 配置
 - 管理租户的 Primary Zone 配置

此外，主备库配置下，主备集群均不支持物理恢复租户。

## 备集群自动创建租户流程

在配置了备集群的情况下，在主集群上创建租户的流程不变，主要分为以下三个阶段：

1. 准备租户资源配置（`CREATE RESOURCE UNIT`）
 2. 创建租户资源池（`CREATE RESOURCE POOL`）
 3. 执行创建租户的 DDL（`CREATE TENANT`）

默认情况下，当主集群上创建一个租户后，备集群会感知到创建租户的 DDL，并自动执行创建租户的流程。备集群上创建租户的流程与主集群一致，但由于主备集群的硬件配置可能不一样，备集群会根据自身的配置来动态创建租户资源池。

下面结合具体示例来介绍备集群自动创建租户的流程。

假设备集群有 4 个 Zone，分别为 `z1`、`z2`、`z3`、`z4`，`z1` 有一台 OBServer，`z2` 有两台 OBServer，`z3` 有两台 OBServer，`z4` 为空。主集群创建了租户 `tenant_test`，租户 ID 为 `1001`。

备集群上创建租户的流程如下：

1. 准备租户资源配置，创建 Unit 配置。

   Unit 配置描述了每个 Unit 的资源规格，默认备集群与主集群一致。如果主集群使用了多个资源池，以主集群 Primary Zone 使用的资源池作为创建标准。

   您也可以定制备集群的 Unit 资源规格，当备集群上存在名为 `standby_unit_config_template` 的 Unit 配置时，系统会采用该模板定义的配置来创建 Unit 配置。

   备集群自动创建的 Unit 配置名称的格式为：前缀 `__unit_config_`，加上租户 ID。本示例中，主集群创建的租户 ID 为 `1001`，则备集群上会自动创建一个名为 `__unit_config_1001` 的 Unit 配置。
 2. 创建租户的资源池。

   资源池的创建需要三个参数：Unit 配置、Zone 列表以及每个 Zone 的 Unit 个数。

   其中：

      - Zone 列表决定了副本数的上限，备集群会选取有效的 Zone 放在 Zone 列表。

       有效的 Zone 指的是部署了 OBServer 的 Zone。本示例中，有效的 Zone 列表为 `z1`、`z2` 和 `z3`，由于 `z4` 没有部署 OBServer，故不属于有效的 Zone。
      - 备集群上每个 Zone 的 Unit 数默认与主集群保持一致，当备集群中每个 Zone 的机器数不足时，会以备集群实际的配置为准。

       本示例中，`z1` 的机器数最少，只有 1 台，因此每个 Zone 最多分配一个 Unit。如果主集群配置的 Unit 数为 2，超过了备集群可以承受的容量，则系统会以备集群实际的配置为准，仅为每个 Zone 配置一个 Unit；如果 `z1` 有两台可用的机器，则可以与主集群保持一致，为每个 Zone 配置两个 Unit。

   备集群自动创建的租户资源池名称的格式为：前缀 `__resource_pool_`，加上租户 ID。本示例中，备集群自动创建的租户资源池名称为 `__resource_pool_1001`。
 3. 执行创建租户操作。

   备集群会定制 Locality 参数和 Primary Zone 参数，其他参数与主集群一致。

   其中：

      - Locality 决定了租户下所有分区的副本类型以及副本分布，备集群默认会创建 F 副本（全功能副本）和 E 副本（加密投票型副本），并且分布在资源池的所有 Zone下。

       本示例中，资源池的 Zone 列表为 `z1,z2,z3`，主集群的 Locality 为 `FULL{1}@z1,FULL{1}@z2,FULL{1}@z3`。假设 `z3` 是加密 Zone，则备集群的 Locality 为 `FULL{1}@z1,FULL{1}@z2,ENCRYPTION_LOGONLY{1}@z3`。
      - Primary Zone 决定了 Leader 副本的分布，默认备集群与主集群一致。

       系统会校验备集群 Primary Zone 的合法性：

            - 当主集群的 Primary Zone 为 `RANDOM` 时，要求 Zone 列表中的所有 Zone 不能跨 Region；如果 Zone 列表中有 Zone 跨 Region，则备集群会自动选择其他合适的 Primary Zone。
            - 当主集群的 Primary Zone 为非 `RANDOM` 时，要求所有的 Zone 合法并且在 Zone 列表中。当可用的 Zone 的个数大于 1 时，要求备集群的 Primary Zone 所在的 Region 存在至少两个非加密类型的 Zone。

## 创建租户的注意事项

为了保证备集群上租户的正常创建，在主集群上创建租户前，需要注意以下事项：

- 在主集群上创建租户 Unit 配置时，需要参考备集群的资源水位。

  默认备集群的 Unit 配置与主集群一致，如果备集群的可用资源不足，可能会导致后续在备集群上自动创建租户失败。建议主集群和备集群采用相同的租户资源配置，在主集群上创建 Unit 配置时应参考备集群的资源水位，保证备集群后续能成功创建资源池。
 - 如果主备需要采用不同的租户资源配置，可以在备集群上设置 Unit 配置模板。

  如果备集群的硬件资源配置确实比主集群低，并且希望主集群和备集群采用不同的租户资源配置，可以在备集群上提前创建 Unit 配置模板 `standby_unit_config_template`，或者修改模板定义，用于备集群在自动创建租户时定制租户资源配置。

  创建、查看和删除 Unit 配置模板的示例如下：

     - 创建备集群的资源规格模板

      ```sql
      obclient> CREATE RESOURCE UNIT standby_unit_config_template
           MAX_CPU 1, MIN_CPU=1, MAX_MEMORY 1073741824, MIN_MEMORY=1073741824,
           MAX_IOPS 128, MAX_DISK_SIZE 536870912, MAX_SESSION_NUM 64, MIN_IOPS=128;
      Query OK, 0 rows affected

      ```
     - 查看资源规格模板配置

      ```sql
      obclient> SELECT NAME, MAX_CPU, MAX_MEMORY, MAX_DISK_SIZE
           FROM __ALL_UNIT_CONFIG
           WHERE NAME LIKE 'standby_unit_config_template';
      +------------------------------+---------+------------+---------------+
      |               NAME           | MAX_CPU | MAX_MEMORY | MAX_DISK_SIZE |
      +------------------------------+---------+------------+---------------+
      | standby_unit_config_template |       1 | 1073741824 |     536870912 |
      +------------------------------+---------+------------+---------------+
      1 row in set

      ```
     - 修改资源规格模板

      ```sql
      obclient> ALTER RESOURCE UNIT  standby_unit_config_template max_cpu = 2;
      Query OK, 0 rows affected (0.01 sec)

      ```
     - 删除资源规格模板

      ```sql
      obclient> DROP RESOURCE UNIT standby_unit_config_template;
      Query OK, 0 rows affected

      ```
 - 需要检查备集群的 Zone 配置。

  当备集群有多个 Zone 时，要求至少有两个非加密类型的 Zone 属于同一个 Region，确保备集群可以生成合理的 Primary Zone 配置，否则备集群自动创建租户会失败。
 - 主集群的租户创建成功后，需要监控备集群上的租户是否创建成功。

  备集群创建租户的过程中可能会卡住，最常见的原因是备集群资源不足，创建租户资源池失败，需要持续监控备集群的租户是否创建成功。

  具体操作操作如下：

     1. 在主集群上，查询 `V$OB_STANDBY_STATUS` 视图的 `SYNCHRONIZATION_STATUS` 列。

       如果显示 `SYS SCHEMA NOT SYNC`，则表示系统租户的 Schema 不同步，可能出现了备集群创建租户卡住的情况。
     2. 在备集群上，查看 `V$OB_CLUSTER_STATS` 视图，观察各个租户的 Schema 和用户数据的同步进度。

       其中，`tenant_id` 为 `1` 表示系统租户，对比主集群和备集群的 `REFRESHED_SCHEMA_VERSION`，确认备集群系统租户的 DDL 的同步进度，如果落后于主集群，则说明可能出现了备集群同步创建租户的 DDL 卡住的情况。

  关于备集群创建租户时卡住问题的排查，请参见 [备集群创建租户时卡住的问题](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000355889)。

## 租户日常维护注意事项

- 在主集群上调整租户的资源配置时，建议也手动调整备集群的租户资源配置。

  建议尽量保证主集群和备集群的资源配置相同。由于备集群不会自动同步租户资源配置修改操作，调整主集群的租户资源配置后，建议也手动调整备集群的租户资源配置。
 - 在主集群上调整数据的多版本保留时间，保证备集群在一段时间内能成功执行 Failover。

  例如，可以通过设置租户级系统变量 `undo_retention` 来调整多版本数据的保留时间，单位为秒，取值范围为 [0, 2^32^)。更多系统变量 `undo_retention` 的信息，请参见 [undo_retention](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000355386)。

  示例如下：

  ```sql
  obclient> SET GLOBAL undo_retention = 1800;

  ```

  该示例表示，设置了多版本数据的保留时间为半小时后，备集群在落后主集群半小时内均可以成功执行 Failover。
 - 在主集群上调整租户级配置项时，需要手动修改备集群的配置项。

  由于租户级配置项不会自动同步到备集群，当主集群设置了租户级配置项后，建议也手动设置备集群的配置项。

 上一篇 下一篇 ![有帮助](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) 咨询热线
