您可以通过 SQL 语句或 OCP 来新建租户。

通过 SQL 语句新建

OceanBase 数据库支持两种类型的租户: MySQL 和 Oracle。只有用 root 用户连接到 sys 租户(root@sys)才能执行CREATE TENANT命令去创建租户。创建新租户后,可以指定创建租户的类型和白名单。

下述展示了创建租户命令的语法:

  1. CREATE TENANT [IF NOT EXISTS] tenantname
  2. [tenant_characteristic_list]
  3. [tenant_variables_list]
  4. tenant_characteristic_list:
  5. tenant_characteristic [, tenant_characteristic...]
  6. tenant_characteristic:
  7. COMMENT 'string'
  8. | {CHARACTER SET | CHARSET} [=] value
  9. | REPLICA_NUM [=] num
  10. | ZONE_LIST [=] (zone [, zone])
  11. | PRIMARY_ZONE [=] zone
  12. | RESOURCE_POOL_LIST [=] (poolname)
  13. | {READ ONLY | READ WRITE}
  14. tenant_variables_list:
  15. SET sys_variables_list
  16. | SET VARIABLES sys_variables_list
  17. | VARIABLES sys_variables_list
  18. sys_variables_list:
  19. sys_variables [, sys_variables...]
  20. sys_variables:
  21. sys_variable_name = expr

参数说明:

  • 如果要创建的租户名已存在,并且没有指定IF NOT EXISTS,则会出现错误。

  • 租户名的合法性和变量名一致,最长 30 个字符,字符只能是大小写英文字母、数字和下划线,而且必须以字母或下划线开头,并且不能是 OceanBase 数据库的关键字。

  • 在租户下可以指定资源池。

  • RESOURCE_POOL_LIST为创建租户时的必填项。

  • CREATE TENANT命令中的RESOURCE_POOL_LIST中,暂时仅支持一个资源池。

示例 1

下述语句展示了创建名为 test_tenant 的一个 3 副本的 MySQL 租户(创建新租户默认是 MySQL 租户)。

  1. obclient> CREATE TENANT IF NOT EXISTS test_tenant charset='utf8mb4', replica_num=3, zone_list=('zone1','zone2','zone3'), primary_zone='zone1;zone2,zone3', resource_pool_list=('pool1')

示例 2

下述语句展示了创建名为 test_tenant 的一个 3 副本 Oracle 租户。通过参数ob_compatibility_mode设置,且必须使用 OBClient 或是 ODC 连接 Oracle 租户进行创建。

  1. obclient> CREATE TENANT IF NOT EXISTS test_tenant charset='utf8mb4', replica_num=3, zone_list=('zone1','zone2','zone3'), primary_zone='zone1;zone2,zone3', resource_pool_list=('pool1') SET ob_compatibility_mode='oracle'

示例 3

下述语句展示了创建租户后,直接修改变量ob_tcp_innvited_nodes将其改为%以允许任何客户端 IP 连接。如果不调整,默认租户的连接方式只允许本机的 IP 可以进行数据库的连接。

  1. obclient> CREATE TENANT IF NOT EXISTS test_tenant charset='utf8mb4', replica_num=3, zone_list=('zone1','zone2','zone3'), primary_zone='zone1;zone2,zone3', resource_pool_list=('pool1') SET ob_tcp_invited_nodes='%'

示例说明如下:

  • primary_zone指该租户的表的分区 Leader 所在的 Zone ,例如primary_ zone =' Zone1; Zone2, Zone3'表示该租户的表的分区 Leader 在 Zone1 上, 这时通过分号来分隔。

  • Zone2 和 Zone3 通过逗号分割,表示 Zone2 和 Zone3 是同一优先级,但是比 Zone1 优先级低。

  • primary_zone设置时其值可以为 RANDOM(必须大写),表示随机。

普通租户的内存最小规格必须大于等于 5 GB,否则创建租户失败。如果希望建立租户进行非常简单的功能测试,可以修改参数alter system __min_full_resource_pool_memory的值为1073741824来允许以最小 1 GB 内存的规格创建租户。

通过 OCP 新建

可以通过 OCP 创建新的租户。

说明

  1. 登录 OCP。

    默认进入 集群概览 页面。

  2. 集群概览 页面的 集群列表 区域,选择待操作的集群并单击其集群名。

  3. 在显示的页面的左侧导航栏上,单击 租户管理

  4. 在页面右上角单击 新建租户

    租户管理页面

  5. 填写基础信息。

    1. 集群默认为当前集群。

    2. 输入租户名称。

      租户名称格式为英文大小写字母、数字和下划线的组合,长度为 2~64 字符。

  6. 填写 Zone 信息。

    1. 为 z1、z2 和 z3 设置副本类型、Unit 规格和 Unit 数量。

      集群选定后,页面会根据所选集群的 Zone 信息给出可配置的 Zone 列表;对于无需做副本分布的 Zone,可以通过最右侧的按钮删除该 Zone 条目。

      其中:

      • 副本类型支持全功能型副本、只读型副本和日志型副本。

      • OCP 内置了一套 Unit 规格;另外也可以在下拉列表的最下方单击 新增规格 按钮新增自定义规格。

      • 指定该 Zone 下的 Unit 数量。

        注意

        Unit 数量不能超过该 Zone 下 Server个数。

        Zone 信息页面

    2. 对 Zone 优先级进行排序。

      同时选择多个 Zone 添加到右侧后,可设置为同一优先级。

      设置优先级排序

  7. 填写基本设置信息。

    1. 设置管理员初始密码,支持随机生成。

      • 对于 MySQL 模式,其管理员账户为 root

      • 对于 Oracle 模式,其管理员账户为 SYS。密码格式:长度为 8 ~ 32,且至少包含 2 个数字、2 个大写字母、2 个小写字母和 2 个特殊字符,支持的特殊字符为 ._+@#$%。

    2. 设置租户模式。

      • 支持 Oracle 和 MySQL 租户模式。

      • 所选集群的 OceanBase 数据库版本在 V2.1.x 及以上时才支持 Oracle 租户模式。

    3. 设置字符集与编码。

      • 对于 MySQL 模式,可选字符集有:utf8mb4、binary、gbk、gb18030。缺省为 utf8mb4。

      • 对于 Oracle 模式,可选字符集有:utf8mb4、gbk、gb18030。缺省为 utf8mb4。

    4. (可选)设置备注信息。

    5. 设置 IP 地址白名单。

      • 此处可以指定该租户允许登录的客户端列表。如果不指定,默认配置为 %,表示允许所有的客户端。自定义白名单列表时需要注意,OCP 机器地址以及所依赖的 OBProxy 地址必须在此名单中,否则 OCP 将无法管理此租户。

        • 默认配置:所有 IP 都可访问。

        • 自定义:设置 IP 白名单,白名单中的 IP 才能访问。

      • 白名单格式说明:

        • IP地址,示例:10.10.10.10,10.10.10.11

        • 子网/掩码,示例:10.10.10.0/24

        • 模糊匹配,示例:10.10.10.% 或 10.10.10._

        • 多种格式混合,示例:10.10.10.10,10.10.10.11,10.10.10.%,10.10.10._,10.10.10.0/24

          特殊说明:% 表示所有客户端都可以连接。

          设置白名单

  8. 单击 提交