首批通过分布式安全可靠测评,为关键业务系统打造
新建租户
更新时间:2024-07-04 16:05:20
您可以通过 SQL 语句来新建租户。
通过 SQL 语句新建租户
OceanBase 数据库仅支持 MySQL 类型的租户。只有用 root 用户连接到 sys 租户(root@sys)才能执行 CREATE TENANT 命令去创建租户。创建新租户后,可以指定创建租户的类型和白名单。
下述展示了创建租户命令的语法:
CREATE TENANT [IF NOT EXISTS] tenantname
[tenant_characteristic_list]
[tenant_variables_list]
tenant_characteristic_list:
tenant_characteristic [, tenant_characteristic...]
tenant_characteristic:
COMMENT 'string'
| {CHARACTER SET | CHARSET} [=] value
| REPLICA_NUM [=] num
| ZONE_LIST [=] (zone [, zone])
| PRIMARY_ZONE [=] zone
| RESOURCE_POOL_LIST [=] (poolname)
| {READ ONLY | READ WRITE}
tenant_variables_list:
SET sys_variables_list
| SET VARIABLES sys_variables_list
| VARIABLES sys_variables_list
sys_variables_list:
sys_variables [, sys_variables...]
sys_variables:
sys_variable_name = expr
参数说明:
如果要创建的租户名已存在,并且没有指定
IF NOT EXISTS,则会出现错误。租户名的合法性和变量名一致,最长 30 个字符,字符只能是大小写英文字母、数字和下划线,而且必须以字母或下划线开头,并且不能是 OceanBase 数据库的关键字。
在租户下可以指定资源池。
RESOURCE_POOL_LIST为创建租户时的必填项。CREATE TENANT命令中的RESOURCE_POOL_LIST中,暂时仅支持一个资源池。
示例 1 :
下述语句展示了创建名为 test_tenant 的一个 3 副本的 MySQL 租户(创建新租户默认是 MySQL 租户)。
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 :
下述语句展示了创建租户后,直接通过修改变量 ob_tcp_innvited_nodes 的值为 % 以便允许任何客户端 IP 连接该租户。如果不调整,默认租户的连接方式为只允许本机的 IP 连接数据库。
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(必须大写),表示指定租户所在的所有 Zone 作为PRIMARY_ZONE的第一优先级。
普通租户的内存最小规格必须大于等于 5 GB,否则创建租户失败。如果希望建立租户进行非常简单的功能测试,可以修改参数 alter system __min_full_resource_pool_memory 的值为 1073741824 来允许以最小 1 GB 内存的规格创建租户。