首批通过分布式安全可靠测评,为关键业务系统打造
新建租户
更新时间:2024-06-17 17:15:42
您可以通过 SQL 语句或 OCP 来新建租户。
通过 SQL 语句新建租户
OceanBase 数据库支持两种类型的租户: MySQL 和 Oracle。只有 root 用户连接到 sys 租户(root@sys)才能执行 CREATE TENANT 命令去创建租户。
创建租户的语法
创建租户的 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'
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 | 指定分配给租户的资源池列表,创建租户时的必填项。 在分配资源池时,普通租户的内存的最小规格必须大于等于 5 GB,否则租户会创建失败。如果您希望创建一个租户进行非常简单的功能测试,可以修改参数 alter system __min_full_resource_pool_memory 的值为
1073741824 来允许以最小 1 GB 内存的规格创建租户。
|
| 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 时,其值可以设置为
RANDOM(必须大写),表示指定租户所在的所有 Zone 作为
PRIMARY_ZONE 的第一优先级。
|
| LOCALITY | 指定副本在 Zone 间的分布情况。 例如:F@z1,F@z2,F@z3,R@z4 表示 z1、z2、z3 为全功能副本,z4 为只读副本。 |
| system_var_name | 可选,指定租户的系统变量值,其中:
|
使用示例
创建名为
test_tenant的一个 3 副本的 MySQL 租户(创建新租户默认是 MySQL 租户)。obclient> CREATE TENANT IF NOT EXISTS test_tenant CHARSET='utf8mb4', ZONE_LIST=('zone1','zone2','zone3'), PRIMARY_ZONE='zone1;zone2,zone3', RESOURCE_POOL_LIST=('pool1');创建名为
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.gv$tenant 视图来确认租户是否创建成功。
使用
root用户登录到数据库的sys租户。执行以下语句,查看当前集群中是否有新创建的租户。
示例如下:
obclient> SELECT * FROM oceanbase.gv$tenant; +-----------+-------------+-----------+--------------+----------------+---------------+-----------+---------------+ | tenant_id | tenant_name | zone_list | primary_zone | collation_type | info | read_only | locality | +-----------+-------------+-----------+--------------+----------------+---------------+-----------+---------------+ | 1 | sys | zone1 | zone1 | 0 | system tenant | 0 | FULL{1}@zone1 | | 1001 | MySQL | zone1 | zone1 | 0 | | 0 | FULL{1}@zone1 | | 1002 | Oracle | zone1 | zone1 | 0 | | 0 | FULL{1}@zone1 | +-----------+-------------+-----------+--------------+----------------+---------------+-----------+---------------+ 3 rows in set
后续操作
租户创建成功后,默认其管理员用户(MySQL 模式为 root,Oracle 模式为 sys)的密码为空,您可以使用 obclient -h10.10.10.1 -P2883 -uusername@tenantname#clustername -p -A 语句登录数据库后,修改管理员用户的密码。修改用户密码的操作请参见 修改用户密码(Oracle 模式)和 修改用户密码(MySQL 模式)。
更多连接数据库的示例及操作,请参见 连接数据库。
通过 OCP 新建租户
您可以通过 OCP 新建租户。新建租户有以下两种方式:
在租户页面创建租户。
在指定集群的租户管理页面创建租户。
本节为您展示通过指定集群的租户管理页面创建租户的操作步骤。
前提条件
在创建租户前,需要确认以下信息:
由于主备库配置中,备集群不支持独立创建租户,故待创建租户的集群必须为主集群,且状态为运行中。
主备库配置中租户管理操作的更多介绍请参见 租户管理。
请确认当前登录用户具备 CLUSTER_MANAGER 角色权限,如果当前用户没有该角色权限,请联系管理员为您添加相应角色,具体操作方法请参见 OCP 对应版本的《用户指南》文档中的 编辑用户 。
操作步骤
登录 OCP。
单击左侧导航栏的 集群 。
在 集群列表 区域选择待操作的集群并单击其集群名。
在显示的页面的左侧导航栏上,单击 租户管理 。
在页面右上角单击 新建租户 。

填写 基础信息 。
集群默认为当前集群。
请输入 租户名称 。租户名称支持英文大小写字母、数字和下划线,长度为 2~64 字符。
填写 Zone 信息 。
默认系统会根据所选集群的 Zone 信息显示可配置的 Zone 列表,对于无需做副本分布的 Zone,可以单击后面的删除按钮删除该 Zone 条目。需要配置的 Zone 信息及其相关说明如下表所示。
配置 描述 副本类型 有以下选项: - 全功能型副本
- 只读型副本
- 日志型副本
请选择多个全功能副本类型,确保全功能副本类型占多数派。Unit 规格 OCP 内置了一套 Unit 规格,请参考本文档附录中 OCP 资源单元规格列表 进行选择,或者您也可以在列表下方单击 新增规格 按钮新增自定义规格。 Unit 数量 指定该 Zone下的 Unit 数量。Unit 数量不能超过该 Zone下 Server 个数。 Zone 优先级排序 Zone的优先级排序。该优先级顺序影响 sys 租户的 Primary Zone 的优先级顺序。 左边的列表框中显示了当前集群的所有 Zone。 您可以在左侧列表框中选择一个或多个 Zone 添加到右侧的列表框中,默认先选择的 Zone 的优先级高于后选择的 Zone,一次选中的多个 Zone 的优先级相同。 移动到右侧的列表框中后,您也可以在右侧的列表框中通过拖拽调整顺序,列表框上方的 Zone 的优先级高于下方的 Zone。 填写 基本设置 。需要完成的基本设置及其相关说明如下表所示。
配置 描述 管理员初始密码 租户管理员账号的密码,支持随机生成。 对于 MySQL 模式,其管理员账号为 root。 对于 Oracle 模式,其管理员账号为 SYS。 密码格式要求如下:长度为 8~32 个字符,支持字母、数字和特殊字符,且至少包含大、小写字母、数字和特殊字符各 2 个,支持的特殊字符为 ~!@#%^&*_-+=`|(){}[]:;',.?/ 租户模式 当前支持 MySQL 和 Oracle 两种租户模式。 需要注意的是,当所选集群的 OB 版本在 2.1 及以上时才支持 Oracle 租户模式。 字符集与编码 对于 MySQL 模式,可选字符集有 utf8mb4、binary、gbk 和 gb18030;默认为 utf8mb4。
对于 Oracle 模式,可选字符集有utf8mb4、gbk 和 gb18030,默认为 utf8mb4。备注 可选,备注说明信息。 IP 地址白名单 用于指定该租户允许登录的客户端列表。如果不指定,则默认配置为 % ,表示允许所有客户端链接。
自定义白名单列表时需要注意,OCP 机器地址以及所依赖的 OBProxy 地址必须在此名单中,否则 OCP 将无法管理此租户。
白名单格式说明如下:- 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。
打开 参数设置 模块,并配置租户参数。
您可通过如图 ① 处,逐个添加启动参数项并为其配置值。
也可通过如图 ② 处,将鼠标悬停于 选择参数模板 字样上,然后选择一个参数模板,系统会将模板中的参数连同配置自动填充到此处。
如果您的租户模式为 MySQL,且选择的参数模板中包含仅支持 Oracle 定义的参数,那么您需在使用模板填充后,手动删除这些参数。

单击 提交 。
您可通过弹出框中的 查看任务 按钮,查看新建租户任务的执行进度。
当任务状态为 完成 ,且集群 租户管理 页的 租户列表 中该新建租户的状态为 运行中 时,表示租户新建成功。