OB基本概念_架构图
unit的概念
是集群最小的资源分配单元。unit是一组物理资源分配单元,例如:创建如下unit:ut_5c2g,并限定相关物理资源。
create resource unit ut_5c2g max_cpu=2, max_memory='5G', max_iops=10000,max_disk_size='10G', max_session_num=1000000;
unit分配后可以通过alter语句修改资源份额
alter resource unit ut_5c2g max_cpu=5, max_memory='2G';
查看资源单元
SELECT * FROM __all_unit_config;
删除资源单元
DROP RESOURCE UNIT ut_5c2g;
资源池的概念
顾名思义,一组资源的池子,通过在集群中划分unit来框定一个资源池
语法:
CREATE RESOURCE POOL poolname
UNIT [=] unitname,
UNIT_NUM [=] unitnum, ##取值要小于等于对应 Zone 中的 OBServer 个数
ZONE_LIST [=] (‘zone’ [, ‘zone’ …]);
示例:
在每个zone上分配一个5c2g的unit。
create resource pool pl_2c5g unit=unit1, unit_num=1,ZONE_LIST=zone1,zone2,zone3;
如图示。一共有三个zone,每个zone上有三台物理机,每个zone上的一台物理机划分了2c5g资源给unit1,资源池pl_2c5g由unit1组成。(ps:unit_num=1的含义,表示在每一个zone中分配一个unit,每个unit的资源落位是要落位到observer所在的一台物理服务器上)
租户
租户可以简单粗暴的理解为oracle的pdb,mysql实例中的一个db。通过租户的方式进行资源隔离,资源分配。租户和租户之间资源相互不影响,(思考:两个租户的资源落位到同一台物理机,是否会由影响。)租户是逻辑概念,租户的实际资源大小,是通过给租户分配资源池来实现的,一个租户可以有多个资源池,但一个资源池只能属于一个租户。
新增租户
create tenant obcp_t1 charset='utf8mb4', zone_list=('zone1,zone2,zone3'),
primary_zone='zone1,zone2,zone3', resource_pool_list=('pl_5c2g') set
ob_tcp_invited_nodes='%';
租户扩容
租户扩容有两种方式:
一、升级规格,将租户所属的资源池的unit调整为一个较大的unit
alter resource pool pool_mysql unit='S3’;
二、增加Unit的数量
alter resource pool pool_mysql unit_num=2;
组户、资源池、unit的相关要点
- 资源单元(Unit)是资源分配的最小单元,同一个Unit不能跨节点(OBServer)
- 每个租户在一台observer上只能有一个unit
- Unit是数据的容器
- 一个租户可以拥有若干个资源池
- 一个资源池只能属于一个租户
- 资源单元是集群负载均衡的一个基本单位
zone
字面意思,区,区域。可以理解为一个逻辑上的区域。在OB中一个zone是由一台或者多台物理服务器组成的(类比oracle表空间和数据文件的概念)。为了保证高可用,OB中一般设置3个副本,所以一般要有三个zone,来保证高可用。
在创建表、创建数据库、租户时可以指定zone的优先级,通过设置Primary zone,来控制主分片在zone上的分布。
- 如无特殊指定,自动继承上级对象的primary_zone:database继承租户的primary_zone设置,table继承database的primary_zone设置。
- database和table可以指定各自的primary_zone,不必和上一级对象的设置保持一致;提供更加灵活的负载均衡策略。
集群/zone/服务器/OBserver进程/租户/资源池/unit关系图
如图,展示了集群/zone/服务器/OBserver进程/租户/资源池/unit之间的关系
小结
- OB 的资源分配流程是:定义资源规格 -> 创建资源池 -> 分配资源池给租户。
- Partition自动负载均衡:同一个分区表的不同分区、租户内的所有分区、不同租户间的分区会自动调整,使得分区分布在多个维度上都达到均衡。
- 管理员可以通过设置primary_zone,影响租户、数据库、表等对象主副本的分布策略。
- 对于关系密切的表,可以通过表组(tablegroup)干预它们的分区分布,使表组内所有的同号分区在同一个 Unit 内部,避免跨节点请求对性能的影响。
- Unit负载均衡:集群扩容后或缩容后,Unit自动在不同的observer之间调整,租户的数据自动在Unit之间重新均衡;整个过程在线完成,极大简化运维难度。
学习参考资料
OB-OBCP学习材料:https://www.oceanbase.com/training/detail?level=OBCP