首批通过分布式安全可靠测评,为关键业务系统打造
新建租户
更新时间:2024-06-17 16:32:30
您可以通过 SQL 语句新建租户。
功能适用性
OceanBase 数据库社区版仅提供 MySQL 模式。
使用限制
仅 sys 租户可以创建租户。
新建租户
OceanBase 数据库支持两种类型的租户: MySQL 和 Oracle。
新建租户语句
创建租户的 SQL 语法如下:
CREATE TENANT [IF NOT EXISTS] tenant_name
[tenant_characteristic_list] [opt_set_sys_var];
tenant_characteristic_list:
tenant_characteristic [, tenant_characteristic...]
tenant_characteristic:
COMMENT 'string'
| {CHARACTER SET | CHARSET} [=] charsetname
| COLLATE [=] collationname
| ZONE_LIST [=] (zone [, zone...])
| PRIMARY_ZONE [=] zone
| DEFAULT TABLEGROUP [=] {NULL | tablegroup}
| RESOURCE_POOL_LIST [=](poolname [, poolname...])
| LOCALITY [=] 'locality description'
| ENABLE_ARBITRATION_SERVICE = {true | false}
opt_set_sys_var:
{SET | SET VARIABLES | VARIABLES} system_var_name = expr [,system_var_name = expr] ...
语法中参数说明如下表所示。
| 参数 | 描述 |
|---|---|
| IF NOT EXISTS | 可选参数,如果要创建的租户名已存在,并且没有指定 IF NOT EXISTS,则会出现错误。 |
| tenant_name | 租户名的合法性和变量名一致,最长 128 个字符,字符只能是大小写英文字母、数字和下划线,而且必须以字母或下划线开头,并且不能是 OceanBase 数据库的关键字。 OceanBase 数据库中所支持的关键字请参见 MySQL 模式的 预留关键字 和 Oracle 模式的 预留关键字。 |
| RESOURCE_POOL_LIST | 创建租户时的必填项,创建租户时仅支持分配一个资源池。如果需要为租户添加多个资源池,则可以待租户创建成功后通过修改租户资源池的方式再进行添加。 注意在分配资源池时,普通租户的内存的最小规格由隐藏配置项 |
| DEFAULT TABLEGROUP | 用于指定租户默认的表组信息,NULL 表示取消默认表组。如果不指定,默认为 NULL。 |
| COMMENT | 指定对该租户的注释信息。 |
| CHARACTER SET | CHARSET | 指定租户的字符集。 字符集相关的介绍信息请参见 字符集。 |
| COLLATE | 指定租户的字符序。 字符序相关的介绍信息请参见 字符序。 |
| ZONE_LIST | 指定租户的 Zone 列表。 |
| PRIMARY_ZONE | 指定租户的 Primary Zone。Primary Zone 表示 Leader 副本的偏好位置。指定 Primary Zone 实际上是指定了 Leader 更趋向于被调度到哪个 Zone 上。 Primary Zone 实际上是一个 Zone 的列表,列表中包含多个 Zone。当 Primary Zone 列表包含多个 Zone 时,使用分号(;)分隔的 Zone 具有从高到底的优先级;使用逗号(,)分隔的 Zone 具有相同优先级。例如,primary_ zone =' zone1; zone2, zone3' 表示该租户的表的分区 Leader 在 zone1 上, zone1 比 zone2、zone3 的优先级高,zone2 和 zone3 是同一优先级。 注意在指定 更多 Primary Zone 相关的介绍信息请参见 Primary Zone。 |
| LOCALITY | 指定副本在 Zone 间的分布情况。 例如: F@z1,F@z2,F@z3,F@z4 表示 z1、z2、z3 、z4 为全功能副本。 |
| ENABLE_ARBITRATION_SERVICE | 指定租户是否开启仲裁服务,如果不显示指定,默认创建的租户其仲裁服务为关闭状态。 如果创建租户的时候未开启仲裁服务,可以在创建租户后再开启仲裁服务,详细操作请参见 开启仲裁服务。功能适用性该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版暂不支持仲裁服务功能。 |
| system_var_name | 可选,指定租户的系统变量值,其中:
|
新建租户示例
创建名为
test_tenant的一个 2 副本并开启仲裁服务的 MySQL 租户(创建新租户默认是 MySQL 租户)。功能适用性
该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版暂不支持仲裁服务功能。
obclient> CREATE TENANT IF NOT EXISTS test_tenant CHARSET='utf8mb4', ZONE_LIST=('zone1','zone2'), PRIMARY_ZONE='zone1;zone2', RESOURCE_POOL_LIST=('pool1') ENABLE_ARBITRATION_SERVICE = true;创建名为
test_tenant的一个 3 副本 Oracle 租户。创建 Oracle 租户需要通过参数
ob_compatibility_mode设置租户模式。obclient> CREATE TENANT IF NOT EXISTS test_tenant CHARSET='utf8mb4', ZONE_LIST=('zone1','zone2','zone3'), PRIMARY_ZONE='zone1;zone2,zone3', RESOURCE_POOL_LIST=('pool1') SET ob_compatibility_mode='oracle';创建租户,并指定允许任何客户端 IP 连接该租户。
obclient> CREATE TENANT IF NOT EXISTS test_tenant CHARSET='utf8mb4',ZONE_LIST=('zone1','zone2','zone3'), PRIMARY_ZONE='zone1;zone2,zone3', RESOURCE_POOL_LIST=('pool1') SET ob_tcp_invited_nodes='%' ;
确认租户是否创建成功
创建租户后,您可以通过查询 oceanbase.DBA_OB_TENANTS 视图来确认租户是否创建成功。
使用
root用户登录集群的sys租户。执行以下语句,查看当前集群中是否有新创建的租户。
示例如下:
obclient> SELECT * FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'test_tenant'\G *************************** 1. row *************************** TENANT_ID: 1004 TENANT_NAME: test_tenant TENANT_TYPE: USER CREATE_TIME: 2023-02-06 13:38:27.626314 MODIFY_TIME: 2023-02-06 13:38:45.005930 PRIMARY_ZONE: zone1;zone2,zone3 LOCALITY: FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 PREVIOUS_LOCALITY: NULL COMPATIBILITY_MODE: ORACLE STATUS: NORMAL IN_RECYCLEBIN: NO LOCKED: NO TENANT_ROLE: PRIMARY SWITCHOVER_STATUS: NORMAL SWITCHOVER_EPOCH: 0 SYNC_SCN: 1678329060764126878 REPLAYABLE_SCN: 1678329060764126878 READABLE_SCN: 1678329060621559803 RECOVERY_UNTIL_SCN: 4611686018427387903 LOG_MODE: ARCHIVELOG ARBITRATION_SERVICE_STATUS: DISABLED 1 row in set
后续操作
租户创建成功后,默认其管理员用户(MySQL 模式为 root,Oracle 模式为 sys)的密码为空,您可以使用 obclient -h10.10.10.1 -P2883 -uusername@tenantname#clustername -p -A 语句登录数据库后,修改管理员用户的密码。修改用户密码的操作请参见 修改用户密码(Oracle 模式)和 修改用户密码(MySQL 模式)。
有关连接数据库的更多示例及操作,请参见 连接数据库。
此外,如果需要使用普通用户登录,则需要为租户创建新的普通用户并授权,创建用户并授权的相关操作请参见 管理用户和权限 章节。