---
title: "创建用户租户 | OceanBase 文档中心"
description: 创建用户租户 OceanBase 数据库面向多租户设计。 在一个大集群中，您可以创建很多租户，不同的部门使用不同的租户。租户和租户之间资源已经进行了隔离，保障了相互之间访问不受影响，类似于数据库中的实例。 背景 MySQL 是一个单租户的模式 ，所有用户在一套资源池下进行使用，这可能会导致一种故障。当用户负载非常高时…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

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

# 创建用户租户

更新时间：2023-08-07 17:30:32

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V3.1.1/zh-CN/600.administrator-guide/300.basic-database-management/500.tenant-management/200.create-a-user-tenant.md)  

OceanBase 数据库面向多租户设计。 在一个大集群中，您可以创建很多租户，不同的部门使用不同的租户。租户和租户之间资源已经进行了隔离，保障了相互之间访问不受影响，类似于数据库中的实例。

## 背景

MySQL 是一个单租户的模式 ，所有用户在一套资源池下进行使用，这可能会导致一种故障。当用户负载非常高时，应用将用尽数据库的所有资源，导致数据库管理员无法连接数据库，也无法执行一些高优先级的控制命令。例如无法执行 kill 命令杀死超时的查询，或者一些管理平台也无法连接到数据库等。

OceanBase 数据库默认会自动创建 sys 租户，sys 租户负责一部分 OceanBase 数据库的管理工作，并且能够访问系统元数据表，sys 自动预留了一定的资源。

## 创建租户

1. 使用 `root` 账号登陆到 `sys` 租户中，使用 MySQL 或 OBClient 访问 OceanBase 数据库：

   ```unknow
   obclient -hxxxx -uroot@sys -P${port_num}  -Doceanbase -A

   ```

   详细信息，参考 [OBClient 文档](https://github.com/oceanbase/obclient/blob/master/README.md)。
 2. 查询系统资源占用情况，例如：

   ```unknow
   mysql> SELECT svr_ip,svr_port, cpu_total, mem_total, disk_total, zone FROM __all_virtual_server_stat ;
   +--------------+----------+-----------+--------------+---------------+-------+
   | svr_ip       | svr_port | cpu_total | mem_total    | disk_total    | zone  |
   +--------------+----------+-----------+--------------+---------------+-------+
   | xx.xx.xx.2   |    33332 |        30 | 236223201280 | 1434105937920 | zone1 |
   | xx.xx.xx.3   |    33332 |        30 | 236223201280 | 1434105937920 | zone2 |
   | xx.xx.xx.1   |    33332 |        30 | 236223201280 | 1434105937920 | zone3 |
   +--------------+----------+-----------+--------------+---------------+-------+

   ```
 3. 查询系统资源分配：

   ```unknow
   mysql> SELECT sum(c.max_cpu), sum(c.max_memory) FROM __all_resource_pool as a, __all_unit_config AS c WHERE a.unit_config_id=c.unit_config_id;
   +----------------+-------------------+
   | sum(c.max_cpu) | sum(c.max_memory) |
   +----------------+-------------------+
   |              5 |       17179869184 |
   +----------------+-------------------+
   1 row in set (0.00 sec)

   ```
 4. 创建资源单元。

   如果想把剩下的所有资源全部使用掉，CPU 和内存分别为步骤 2 和步骤 3 得到的值, max_cpu值设置为第二步得到的cpu_total 减去第三步得到的sum(c.max_cpu), 在本例中为25; max_memory和min_memory 设置为第二步的到的mem_total 值 减去 第三步的到的sum(c.max_memory), 在本例中为219043332096。

   ```unknow
   mysql> CREATE RESOURCE UNIT unit1
     max_cpu = 25,
     max_memory = 219043332096,
     min_memory = 219043332096,
     max_iops = 10000,
     min_iops = 1280,
     max_session_num = 3000,
     max_disk_size = 214748364800 -- 200 GB
   ;

   ```
 5. 创建资源池。

   ```unknow
   mysql> CREATE RESOURCE POOL pool1
     UNIT = 'unit1',
     UNIT_NUM = 1,
     ZONE_LIST = ('zone1', 'zone2', 'zone3')
   ;

   ```

      1. 每个资源池在每个 OBServer 上只能有一个资源单元。如果 `unit_num` 大于1，每个 zone 内都必须有和 `unit_num` 对应数目的机器。
      2. ZoneList 一般与 zone 个数保持一致。
      3. 如果在某个 zone 内找不到足够剩余资源的机器来创建资源单元，资源池会创建失败。

        ```unknow
        mysql> DROP RESOURCE POOL pool1;

        ```

        详细信息，参考 [资源管理概述](https://www.oceanbase.com/docs/community-observer-cn-10000000000014164)。
 6. 创建租户。

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

   ```

   PrimaryZone：指定主副本分配到 Zone 内的优先级，逗号两侧优先级相同分号，左侧优先级高于右侧。比如 zone1>zone2=zone3，如果使用 RANDOM，则 Partition 的 Leader 随机分布。

   详细信息，参考 [租户管理概述](https://www.oceanbase.com/docs/community-observer-cn-10000000000014142)。
 7. 登录租户之前，运行以下命令修改参数：

   ```unknow
   mysql> ALTER TENANT test_tenant SET VARIABLES ob_tcp_invited_nodes='%';

   ```
 8. 使用新的租户登录系统。

   ```unknow
   obclient -hxxxx -P${port_num}  -uroot@test_tenant  -A -c

   ```

## 创建用户

首次使用新租户连接 OceanBase 数据库时，您必须使用 `root` 用户。成功连接后，您可以创建新用户连接 OceanBase 数据库。详细信息，参考 [创建用户](https://www.oceanbase.com/docs/community-observer-cn-10000000000013765) 文档。

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