作者:胖头鱼的鱼缸(尹海文) Oracle ACE Pro: Database PostgreSQL ACE 10年数据库行业经验 拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证 墨天轮MVP,ITPUB认证专家 圈内拥有“总监”称号,非著 名社恐(社交恐怖分子) 公众号:胖头鱼的鱼缸 CSDN:胖头鱼的鱼缸(尹海文) 墨天轮:胖头鱼的鱼缸 ITPUB:yhw1809 IFClub:胖头鱼的鱼缸 除授权转载并标明出处外,均为“非法”抄袭
上一期简单部署了OB社区版集群,有一些计划不合理的地方,因此花了点时间重新捯饬了一下,新的数据库环境如下:
数据库名称:yhw_cluster

今年去尝试过一次OBCP,考的太细了,毕竟没有实地摸索过OceanBase,没有过,这一次就通过这套集群来摸索一下。
通过OBProxy访问集群:
obclient -h10.10.10.202 -P2883 -uroot@sys -p'OceanBase#!123' -Doceanbase -A


可用区是一个逻辑概念,每个可用区由若干个服务器一起来承载一个完整的数据副本。
在我部署的集群中,存在两个可用区:zone1和zone2,每个可用区分别有两台OBServer服务器。
SELECT SVR_IP, ZONE, TENANT_ID, UNIT_ID, MIN_CPU, MAX_CPU, ROUND(MEMORY_SIZE/1024/1024/1024,1) AS MEMORY_SIZE_GB, MIN_IOPS, MAX_IOPS,IOPS_WEIGHT, ROUND(LOG_DISK_SIZE/1024/1024/1024,1) AS LOG_SIZE_GB, ROUND(LOG_DISK_IN_USE/1024/1024/1024,1) AS LOG_USED_GB, ROUND(DATA_DISK_IN_USE/1024/1024/1024,1) AS DATA_USED_GB FROM GV$OB_UNITS ;

OceanBase数据库采用了单集群多租户(tenant)设计,通过租户实现资源隔离,让每个数据库服务的实例不感知其他实例的存在,并通过权限控制确保租户数据的安全性,天然支持云数据库架构,支持公有云、私有云、混合云等多种部署形式。


OceanBase 数据库是多租户的数据库系统,一个集群内可包含多个相互独立的租户,每个租户提供独立的数据库服务。在 OceanBase 数据库中,使用资源配置(Unit Config)、资源池(Resource Pool)和资源单元(Unit)三个概念,对各租户的可用资源进行管理。

CREATE RESOURCE UNIT [IF NOT EXISTS] unit_name MEMORY_SIZE [=] 'size_value', [MIN_CPU [=] cpu_num,] MAX_CPU [=] cpu_num, [MIN_IOPS [=] iops_num,] [MAX_IOPS [=] iops_num,] [IOPS_WEIGHT [=]iopsweight,] [LOG_DISK_SIZE [=] 'size_value'];
必选参数
可选参数
CREATE RESOURCE POOL pool_name
UNIT [=] unit_name,
UNIT_NUM [=] unit_num,
ZONE_LIST [=] ('zone_name' [, 'zone_name' ...]);
参数说明
CREATE TENANT { {[IF NOT EXISTS] tenant_name
[tenant_option] [set_sys_var]} };
tenant_option:
| LOCALITY = locality_description
| PRIMARY_ZONE= primary_zone_list
| RESOURCE_POOL_LIST [=] (pool_name [, pool_name...])
| {CHARACTER SET | CHARSET} [=] charset_name
| COLLATE [=] collation_name
set_sys_var:SET var_name = var_value [,var_name =var_value...]
参数说明
tenant_option
set_sys_var:创建租户的同时设置租户级的全局变量。
obclient -h10.10.10.203 -P2881 -uroot@sys -p'OceanBase#!123' -Doceanbase -A

租户规格为unit最大CPU为1,内存2G。resource pool指定每个zone运行1个unit。主要zone为zone1。
CREATE RESOURCE UNIT unit1 MAX_CPU 1,
MEMORY_SIZE '2G';CREATE RESOURCE POOL pool1 UNIT 'unit1',
UNIT_NUM 1,
ZONE_LIST ('zone1','zone2');CREATE TENANT test01
PRIMARY_ZONE='zone1',
RESOURCE_POOL_LIST=('pool1');

租户规格为unit最大CPU为2,内存2G。resource pool指定每个zone运行2个unit。主要zone为zone2。
CREATE RESOURCE UNIT unit2 MAX_CPU 2,
MEMORY_SIZE '2G';CREATE RESOURCE POOL pool2 UNIT 'unit2',
UNIT_NUM 2,
ZONE_LIST ('zone1','zone2');CREATE TENANT test02
PRIMARY_ZONE='zone2',
RESOURCE_POOL_LIST=('pool2');

可以通过SQL查看租户资源分配情况与租户运行节点:
SELECT T1.ZONE, T1.SVR_IP, T1.UNIT_ID, T2.NAME AS RESOURCE_POOL_NAME, T3.TENANT_NAME, T1.STATUS, T2.REPLICA_TYPE, T1.MIN_CPU, T1.MAX_CPU, ROUND(T1.MEMORY_SIZE/1024/1024/1024,1) AS MEMORY_SIZE_GB, ROUND(T1.LOG_DISK_SIZE/1024/1024/1024,1) AS LOG_DISK_GB, T1.MAX_IOPS, T1.MIN_IOPS, T1.IOPS_WEIGHT FROM DBA_OB_UNITS T1, DBA_OB_RESOURCE_POOLS T2, DBA_OB_TENANTS T3 WHERE T1.RESOURCE_POOL_ID = T2.RESOURCE_POOL_ID AND T2.TENANT_ID = T3.TENANT_ID;
这里可以看到test01运行在10.10.10.204和10.10.10.206上;test02运行在10.10.10.203,10.10.10.204,10.10.10.205,10.10.10.206上。
在访问租户前需要在管理界面将白名单放开:

根据上一小节查出的内容可以到租户运行对应节点IP访问租户数据库:
obclient -h10.10.10.204 -P2881 -uroot@test01 -p'OceanBase#!123'obclient -h10.10.10.203 -P2881 -uroot@test02 -p'OceanBase#!123'

也可以通过OBProxy访问租户数据库:
obclient -h10.10.10.202 -P2883 -uroot@test01 -p'OceanBase#!123'obclient -h10.10.10.202 -P2883 -uroot@test02 -p'OceanBase#!123'

本期通过本地部署的OB,对OB的可用区与租户做了个简单了解与实操。
第一篇OB总结,有点乱,后面慢慢来。
老规矩,知道写了些啥。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31466763/viewspace-3098474/ ,如需转载,请注明出处,否则将追究法律责任。