首批通过分布式安全可靠测评,为关键业务系统打造
CREATE TENANT
更新时间:2026-04-10 11:58:35
描述
CREATE TENANT 语句用于创建用户租户。OceanBase 数据库仅支持创建用户租户,系统租户为集群创建时系统自动创建;Meta 租户是 OceanBase 数据库内部自管理的租户,每创建一个用户租户会创建一个对应的 Meta 租户,其生命周期与用户租户保持一致。
通过 CREATE TENANT 语句创建的租户,默认其租户角色为 PRIMARY。
使用限制及注意事项
OceanBase 数据库支持两种类型的租户,MySQL 兼容模式和 Oracle 兼容模式。创建租户时,需要指定合适的租户的类型。租户创建后,租户类型无法修改。
创建租户时需要为租户分配资源池,需要提前做好资源规划并创建好资源池,创建资源池的相关操作请参见 创建租户。
有关克隆租户使用限制的详细信息,请参见 克隆租户
权限要求
仅 sys 租户的 root 用户(root@sys)可以创建租户,其他租户不支持创建租户。
语法
创建租户的语法如下:
CREATE TENANT { {[IF NOT EXISTS] tenant_name [tenant_option_list] [set_sys_var]} | {clone_tenant_clause} };
tenant_option_list:
tenant_option [, tenant_option...]
tenant_option:
LOCALITY [=] 'locality_description'
| PRIMARY_ZONE [=] primary_zone_name
| RESOURCE_POOL_LIST [=] (pool_name [, pool_name...])
| ENABLE_ARBITRATION_SERVICE [=] {True | False}
| {CHARACTER SET | CHARSET} [=] charset_name
| COLLATE [=] collation_name
| {READ ONLY | READ WRITE}
| COMMENT [=] 'string'
set_sys_var:
{SET | SET VARIABLES | VARIABLES} var_name {TO | =} var_value [,var_name {TO | =} var_value...]
clone_tenant_clause:
new_tenant_name FROM source_tenant_name WITH
RESOURCE_POOL [=] resource_pool_name,
UNIT [=] unit_config
参数说明
| 参数 | 描述 |
|---|---|
| tenant_name | 指定租户名。最长 63 个字节,只能为大小写英文字母,数字和下划线,而且必须以字母或下划线开头,并且不能是 OceanBase 数据库的关键字。 |
| IF NOT EXISTS | 如果要创建的租户名已存在,并且没有指定 IF NOT EXISTS,则会报错。 |
| LOCALITY | 描述副本在 Zone 间的分布情况。 例如:F@z1,F@z2,F@z3 表示 z1、z2、z3 为全功能副本。 |
| PRIMARY_ZONE | 指定租户所在的 Primary Zone。主要支持以下取值:
如果创建租户时未指定 Primary Zone,则默认取值为 RANDOM。 |
| RESOURCE_POOL_LIST | 指定分配给租户的资源池列表,创建租户时必须指定该参数。 如果有多个资源池,要求多个资源池的 UNIT_NUM 个数一致。
注意同一个租户的多个资源池,其对应的 |
| ENABLE_ARBITRATION_SERVICE | 指定租户是否开启仲裁服务,如果不指定,默认值为 False。对于集群中有仲裁服务的场景,如果创建租户时未开启仲裁服务,可以在创建租户后再开启仲裁服务,详细操作请参见 为租户开启仲裁服务。 |
| CHARACTER SET | CHARSET | 指定租户级的字符集,有关字符集的详细介绍,请参见 字符集(MySQL 模式) 和 字符集(Oracle 模式)。 |
| COLLATE | 创建 MySQL 兼容模式的租户时,指定租户级的字符序。有关 MySQL 模式下字符序的详细介绍,参见 字符序(MySQL 模式)。
说明创建 Oracle 兼容模式的租户时,不支持设置租户级字符序。如果设置了字符序,语法上不会报错,但设置并不会生效,系统会将其覆盖为字符集对应的默认字符序。 |
| READ ONLY | READ WRITE | 指定租户的属性为只读还是读写。如果不指定,默认为读写属性。 |
| set_sys_var | 指定租户级的系统变量值。其中:
|
| COMMENT | 填写注释,可选。 |
| clone_tenant_clause | 克隆租户子句。 |
| new_tenant_name | 新克隆租户的名称。 |
| source_tenant_name | 源租户名称,即被克隆租户的名称。 |
| resource_pool_name | 表示资源池的名称。租户克隆时将会自动根据源租户的资源分布,为新租户创建出资源池。 |
| unit_config | 新克隆租户资源池的 Unit 规格。 |
示例
创建一个名为
test_tenant的 MySQL 兼容模式的租户,Primary Zone 为zone1;zone2,zone3,资源池为pool1,字符集为utf8mb4,允许所有客户端 IP 连接数据库。obclient [oceanbase]> CREATE TENANT IF NOT EXISTS test_tenant PRIMARY_ZONE='zone1;zone2,zone3', RESOURCE_POOL_LIST=('pool1'), CHARSET='utf8mb4' SET ob_tcp_invited_nodes TO '%';创建一个名为
tenant1的 Oracle 兼容模式的租户,Primary Zone 为zone1,资源池为pool1,允许所有客户端 IP 连接数据库。obclient [oceanbase]> CREATE TENANT tenant1 PRIMARY_ZONE='zone1', RESOURCE_POOL_LIST=('pool1') SET ob_compatibility_mode='oracle', ob_tcp_invited_nodes='%';新克隆租户名称为
clone_mysql001,备租户为mysql001。其中,指定新租户的资源池名称为clone_mysql001_resource_pool,资源单元为unit001。注意
租户克隆功能依赖于日志归档,需要对源租户开启日志归档,才可以对该租户执行租户克隆;并且在租户克隆语句的执行期间,不可以关闭源租户的日志归档。有关日志归档的详细信息,请参见 日志归档概述
CREATE TENANT clone_mysql001 FROM mysql001 WITH RESOURCE_POOL = clone_mysql001_resource_pool, UNIT = unit001;当您在系统租户下执行租户克隆语句时,该语句会生成对应的克隆任务,您可以通过 DBA_OB_CLONE_PROGRESS 和 DBA_OB_CLONE_HISTORY 视图查看克隆任务的执行状态。
示例如下:
obclient [(none)]> SELECT * FROM oceanbase.DBA_OB_CLONE_HISTORY WHERE CLONE_TENANT_NAME = 'clone_mysql001'\G返回结果如下:
*************************** 1. row *************************** CLONE_JOB_ID: 1706248530701634201 TRACE_ID: YB42AC1E87C9-00060F1AD6DF0264-0-0 SOURCE_TENANT_ID: 1002 SOURCE_TENANT_NAME: mysql001 CLONE_TENANT_ID: 1012 CLONE_TENANT_NAME: clone_mysql001 TENANT_SNAPSHOT_ID: 1706248530759745885 TENANT_SNAPSHOT_NAME: _inner_snapshot$1706248530759740679 RESOURCE_POOL_ID: 1006 RESOURCE_POOL_NAME: clone_mysql001_resource_pool UNIT_CONFIG_NAME: unit001 RESTORE_SCN: 1706248531829799503 STATUS: CLONE_SYS_SUCCESS CLONE_JOB_TYPE: FORK CLONE_START_TIME: 2024-01-26 13:55:30.705699 CLONE_FINISHED_TIME: 2024-01-26 13:56:00.141434 RET_CODE: 0 ERROR_MESSAGE: NULL 1 row in set
更多有关视图的字段信息,请参见 DBA_OB_CLONE_PROGRESS 和 DBA_OB_CLONE_HISTORY。