查看租户

在 OceanBase 数据库支持的客户端工具中登录集群的 sys 租户并运行下述语句可以查看当前集群的租户信息。

  1. obclient> SELECT * FROM oceanbase.gv$tenant;

普通的租户可以运行下述语句快速查看当前租户。

  1. obclient> SHOW TENANT;

创建租户

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 内存的规格创建租户。

修改租户

下述展示了修改租户命令的语法:

  1. ALTER TENANT tenantname [SET]
  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. | LOCK | UNLOCK
  14. tenant_variables_list:
  15. VARIABLES sys_variables_list
  16. sys_variables_list:
  17. sys_variables [, sys_variables...]
  18. sys_variables:
  19. sys_variable_name = expr

删除租户

删除租户后,租户下的数据库和表也同时被删除。但是租户使用的资源配置不会被删除。资源配置可以继续给其他租户使用。

下述展示了删除租户命令的语法:

  1. DROP TENANT | force
  • TENANT参数代表延迟删除租户,后台线程会进行 GC 动作,租户的信息仍然可以通过内部表查询。
  • force 参数可以立刻删除租户。

示例语句如下所示:

示例语句如下所示:

  • 延迟删除租户 t1

    1. obclient> DROP TENANT t1;
  • 立刻删除租户 t1

    1. obclient> DROP TENANT t1 force;