暂无图片
暂无图片
9
暂无图片
暂无图片
暂无图片

OceanBase创建租户

OceanBase 2022-12-03
1926

本节主要介绍通过 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 表示 z1z2z3 为全功能副本,z4 为只读副本。
system_var_name可选,指定租户的系统变量值,其中:

  • 变量 ob_compatibility_mode 用于指定租户的兼容模式,可选择 MySQL 或 Oracle 模式,并且只能在创建时指定。如果不指定 ob_compatibility_mode,则默认兼容模式为 MySQL 模式。
  • 变量 ob_tcp_invited_nodes 用于指定租户连接的白名单,即允许哪些客户端 IP 连接该租户。如果不调整 ob_tcp_invited_nodes 的值,则默认租户的连接方式为只允许本机的 IP 连接数据库。 您也可以待租户创建成功后再修改其白名单设置,修改白名单的具体操作请参见 设置和查看租户白名单 。

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论