OceanBase 数据库 4.0 开始,有三种类型的租户:系统租户、用户租户 以及 每个用户租户对应的 Meta 租户
规则
一个 OceanBase 数据库租户可以在资源规格、资源池、副本类型,副本分布几个不同维度灵活定义,所以创建租户时,也需要按照 “unit config -> resource pool -> tenant” 的顺序进行创建和定义
创建 Unit
登录
obclient -uroot@sys -h127.0.0.1 -P2881
资源单元 Unit 是一个租户使用 CPU、内存的最小逻辑单元,也是集群扩展和负载均衡的一个基本单位,在集群节点上下线,扩容、缩容时会动态调整资源单元在节点上的分布进而达到资源的使用均衡。而 Unit Config 则规定了一个 Unit 需要使用的计算存储资源(包含内存、CPU 和 IO 等)的规格,是一个配置信息
CREATE RESOURCE UNIT test1 MAX_CPU =3,MIN_CPU =3 ,MEMORY_SIZE ='2G';
创建 resource pool
Resource Pool 则是租户的资源实体,所以在这一步我们需要创建一个 Resource Pool,并且与 Unit Config 关联起来
CREATE RESOURCE POOL pool1 UNIT='test1',UNIT_NUM=1,ZONE_LIST=('zone1');
注意
上面的例子针对的是单节点的集群环境,如果您的集群有 3 个节点,那么 ZONE_LIST
的值应该为 ('zone1','zone2','zone3')
,其中 Zone 的名称需要根据您创建的情况具体填写。
查看集群信息
obclient [(none)]> SHOW PARAMETERS LIKE 'cluster';
创建 租户
在完成 Unit Config、Resource Pool 的创建,完成资源单元和资源池的对应后,就可以正常开始租户创建了。
定义一个名为 tenant1
的单副本租户,并规定字符集为 utf8mb4
,使用 pool1
的资源池,ob_tcp_invited_nodes
是租户白名单定义,初始可以设置为 '%',表示任意 IP 地址均可以访问,后期可以修改
CREATE TENANT IF NOT EXISTS tenant1 CHARSET='utf8mb4', ZONE_LIST=('zone1'), PRIMARY_ZONE='zone1', RESOURCE_POOL_LIST=('pool1') SET ob_tcp_invited_nodes='%';
注意
上面的例子针对的是单节点的集群环境,只能创建单副本的租户。如果您的集群有 3 个节点,那么 ZONE_LIST
的值应该为('zone1','zone2','zone3'),PRIMARY_ZONE
则填写 'zone1;zone2;zone3'
,表示租户的 Leader 优先分布在 zone1
,其次为 zone2
。
验证
通过查询 oceanbase.DBA_OB_TENANTS
视图来确认租户是否创建成功
obclient [oceanbase]> SELECT * FROM DBA_OB_TENANTS;
# 查看unit情况,当前在oceanbase database下,有默认的sys_unit_config select * from __all_unit_config \G # 查看resource_pool情况 select * from __all_resource_pool \G # 查看租户情况 select * from __all_tenant \G # 根据上述3张表的情况,可以观察到,集群obdemo下目前没有业务租户,也没有额外的资源单位和资源池
修改租户配置
OceanBase 数据库可以灵活的对 租户资源的 CPU,内存资源进行调整,并且在线生效,对业务透明。修改租户所占用的 CPU、内存大小,仅需要 调整租户 所对应的 Unit Config,不需要对资源池或者租户进行调整
SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS;
调整 资源单元 CPU、内存的使用大小为 5 c,10 G
ALTER resource unit unit_test1 max_cpu =5,min_cpu =5 ,memory_size ='10G'; SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS;