本节主要介绍通过 SQL 命令创建 OceanBase 数据库租户的方法。OceanBase 数据库仅支持 sys 租户创建资源单元、资源池和业务租户。
描述
在创建新租户时,如果当前的资源池均被使用(被其他租户使用),需要创建新的资源池。在创建资源池前,需要先确定资源单元配置和资源使用范围。
操作步骤
1. 创建资源单元规格
资源单元仅仅是规格定义,不实际分配资源。
语法
CREATE RESOURCE UNIT unit_name
MAX_CPU [=] cpu_num,
[MIN_CPU [=] cpu_num,]
MEMORY_SIZE [=] mem_size,
[LOG_DISK_SIZE = disk_size,]
[MAX_IOPS [=] iops_num,MIN_IOPS [=] iops_num,IOPS_WEIGHT [=] weight_num];
参数解释
| 参数 | 描述 |
|---|---|
| unit_name | 指定资源单元名称。 |
| MAX_CPU | 指定 CPU 的最多数量。最小值为 1C。 |
| MIN_CPU | 指定 CPU 的最少数量,为可选项。默认等于 MAX_CPU。最小值为 1C。 |
| MEMORY_SIZE | 指定内存容量,最小值为 1G。 |
| LOG_DISK_SIZE | 指定租户的 Unit 日志盘大小,为可选项。默认值为 3 倍的内存规格值。最小值为 2G。 |
| MAX_IOPS | 指定 IOPS 的最多数量,为可选项。最小值为 1024。 |
| MIN_IOPS | 指定 IOPS 的最少数量,为可选项。最小值为 1024。 |
| IOPS_WEIGHT | 指定 IOPS 的权重值,为可选项。 |
说明
IOPS 规格参数默认不需要指定,系统根据 CPU 规格自动计算。计算规则如下:
- MAX_IOPS 和 MIN_IOPS 最小值
1024,并且要求 MAX_IOPS 的值大于等于 MIN_IOPS。- 如果均未指定 MIN_IOPS 和 MAX_IOPS,则根据 MIN_CPU 规格自动计算,
1个 core 对应1万 IOPS 值。
MAX_IOPS = MIN_IOPS = MIN_CPU * 10000。- 如果未指定 IOPS_WEIGHT,则
IOPS_WEIGHT = MIN_CPU。- 如果指定了 IOPS_WEIGHT,则以指定为准。
- 如果只指定了 MAX_IOPS,MIN_IOPS 取 MAX_IOPS 值;反之亦然。
- 在 IOPS_WEIGHT 未指定的情况下,默认值为
0。
示例
创建资源单元 unit001 配置为 2 个 CPU,6G 内存。
obclient> CREATE RESOURCE UNIT unit001
MAX_CPU 2,MEMORY_SIZE '6G';
Query OK, 0 rows affected
或者
obclient> CREATE RESOURCE UNIT unit001
MAX_CPU 2,MEMORY_SIZE 6442450944;
Query OK, 0 rows affected
2. 创建资源池
资源池会实际创建 unit,按规格定义分配资源。
语法
CREATE RESOURCE POOL pool_name
UNIT [=] unit_name,
UNIT_NUM [=] unit_num,
ZONE_LIST [=] ('zone' [, 'zone' ...]);
参数解释
| 参数 | 描述 |
|---|---|
| pool_name | 指定要创建的资源池的名称。 |
| UNIT [=] unit_name | 指定资源规格的名称。 |
| UNIT_NUM [=] unit_num | 指定要创建的单个 Zone 下的 Unit 个数。 每个单元会根据当前集群负载,自动在每个 Zone 中选择一个 Server 负载,但同一个资源池的多个 Unit 不能分配到同一个 Server,即一个资源池包含的Unit 个数不能超过单 Zone 内 Server 的个数。 |
| ZONE_LIST [=] ('zone' [, 'zone' ...]) | 指定要创建的资源池所属的 Zone。一般与 zone 个数保持一致。 |
示例
创建资源池 pool001。
obclient> CREATE RESOURCE POOL pool001
UNIT='unit001',UNIT_NUM=1,ZONE_LIST=('zone1','zone2','zone3');
Query OK, 0 rows affected
3. 创建租户
将资源池分配给对应的租户。
语法
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} [=] charset_name
| COLLATE [=] collation_name
| PRIMARY_ZONE [=] zone
| DEFAULT TABLEGROUP [=] {NULL | tablegroup}
| RESOURCE_POOL_LIST [=](pool_name [, pool_name...])
| LOCALITY [=] 'locality description'
opt_set_sys_var:
{SET | SET VARIABLES | VARIABLES} system_var_name = expr [,system_var_name = expr] ...
参数解释
| 参数 | 描述 |
|---|---|
| tenant_name | 指定租户名。最长 128 个字符,只能有大小写英文字母,数字和下划线,而且必须以字母或下划线开头,并且不能是 OceanBase 数据库的关键字。 |
| IF NOT EXISTS | 如果要创建的租户名已存在,并且没有指定 IF NOT EXISTS,则会报错。 |
| RESOURCE_POOL_LIST | 资源池列表,为创建租户时的必填项,暂时只支持一个 Resource Pool。 |
| DEFAULT TABLEGROUP | 设置租户默认表组信息,NULL 表示取消默认表组。 如果不指定,默认为 NULL。 |
| COMMENT | 指定注释。 |
| CHARACTER SET | CHARSET | 指定租户的字符集。 |
| COLLATE | 指定字符序。 |
| PRIMARY_ZONE | 指定 Primary Zone。主副本分配到 Zone 内的优先级,逗号两侧优先级相同,分号左侧优先级高于右侧。比如 zone1,zone2;zone3。 |
| LOCALITY | 描述副本在 Zone 间的分布情况。 例如:F@z1,F@z2,F@z3,R@z4 表示 z1、z2、z3 为全功能副本,z4 为只读副本。 |
| system_var_name | 可选,指定租户的系统变量值,其中:
OceanBase 数据库中,租户可设置的系统变量请参见 系统变量 。 |
示例
创建 MySQL 兼容模式租户
obclient> CREATE TENANT IF NOT EXISTS mysql001 CHARSET='utf8mb4', PRIMARY_ZONE='zone1;zone2,zone3', RESOURCE_POOL_LIST=('pool001') SET ob_tcp_invited_nodes='%'; Query OK, 0 rows affected创建 Oracle 兼容模式租户
obclient> CREATE TENANT IF NOT EXISTS oracle002 CHARSET='utf8mb4', PRIMARY_ZONE='zone1;zone2,zone3', RESOURCE_POOL_LIST=('pool002') SET ob_tcp_invited_nodes='%',ob_compatibility_mode='oracle'; Query OK, 0 rows affected
4. 设置管理员用户密码
注意
使用 SQL 语句创建的租户,租户管理员用户密码为空。使用前请先设置密码。
示例如下:
将租户 mysql001 的 root 用户密码设置为 **1***。
$ obclient -h10.10.10.1 -P2881 -uroot@mysql001 -p -A
Enter password:
obclient> SET PASSWORD = PASSWORD('**1***');
Query OK, 0 rows affected「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




