当前位置: 首页 > news >正文

【赵渝强老师】OceanBase租户的资源管理

1

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

image.png
点击这里查看视频讲解:【赵渝强老师】OceanBase租户的资源管理

一、 资源配置与资源单元

一个资源单元中可以包含多个资源配置。资源配置是用来描述每个单元中可用的CPU、内存、存储空间和IOPS等的规格。这里需要注意,资源配置指定的是对应资源单元能够提供的服务能力,而不是资源单元的实时负载。下面展示了创建资源单元的完整语法格式:

CREATE RESOURCE UNIT [IF NOT EXISTS] unit_name
MEMORY_SIZE [=] 'size_value',
MAX_CPU [=] cpu_num,
[MAX_IOPS [=] iops_num,]
[MIN_CPU [=] cpu_num,]
[MIN_IOPS [=] iops_num,]
[IOPS_WEIGHT [=]iopsweight,]
[LOG_DISK_SIZE [=] 'size_value'];

下面的语句将创建一个名叫ru1的资源单元,其中将包含若干个资源配置,如:可以的CPU、内存大小、存储空间等。

ob> create resource unit ru1 max_cpu 1, min_cpu 1, memory_size '2G',log_disk_size '2G' ;# 提示:Meta租户没有独立的Unit,租户资源管理过程中不管理Meta租户。
# 系统在创建租户时默认为Meta租户预留资源,各项资源从用户租户的资源中扣除。
# 目前Meta租户的各项资源采用默认配置,不支持用户指定。

通过DBA_OB_UNIT_CONFIGS视图,可以查看所有资源配置和资源单元信息。

ob> select * from oceanbase.dba_ob_unit_configs \G;# 输出的信息如下:
*************************** 1. row ***************************UNIT_CONFIG_ID: 1NAME: sys_unit_configCREATE_TIME: 2025-04-09 14:50:05.982963MODIFY_TIME: 2025-04-09 14:50:05.982963MAX_CPU: 1MIN_CPU: 1MEMORY_SIZE: 2147483648LOG_DISK_SIZE: 2147483648DATA_DISK_SIZE: NULLMAX_IOPS: 9223372036854775807MIN_IOPS: 9223372036854775807IOPS_WEIGHT: 1MAX_NET_BANDWIDTH: 9223372036854775807
NET_BANDWIDTH_WEIGHT: 1
*************************** 2. row ***************************UNIT_CONFIG_ID: 1001NAME: ru1CREATE_TIME: 2025-04-09 14:56:02.348728MODIFY_TIME: 2025-04-09 14:56:02.348728MAX_CPU: 1MIN_CPU: 1MEMORY_SIZE: 2147483648LOG_DISK_SIZE: 2147483648DATA_DISK_SIZE: NULLMAX_IOPS: 9223372036854775807MIN_IOPS: 9223372036854775807IOPS_WEIGHT: 1MAX_NET_BANDWIDTH: 9223372036854775807
NET_BANDWIDTH_WEIGHT: 1
2 rows in set (0.001 sec)

通过使用alter resource unit语句可以修改资源单元的资源配置,例如:

ob> alter resource unit ru1 memory_size '3G';

二、 资源池

资源池由若干个资源单元组成,通过给资源池指定资源配置,可指定资源池下各资源单元的物理资源。下面展示了创建资源池的完整语法格式:

CREATE RESOURCE POOL pool_name
UNIT [=] unit_name,
UNIT_NUM [=] unit_num,
ZONE_LIST [=] ('zone_name' [, 'zone_name' ...]);

在创建资源池之前首先确定集群中的可用区:

ob> use oceanbase;
ob> select zone,status,type from oceanbase.dba_ob_zones;# 输出的信息如下:
+-------+--------+-----------+
| zone  | status | type      |
+-------+--------+-----------+
| zone1 | ACTIVE | ReadWrite |
| zone2 | ACTIVE | ReadWrite |
+-------+--------+-----------+
2 rows in set (0.044 sec)

创建资源池的示例语句如下:

ob> create resource pool rp1 unit 'ru1', unit_num 2, zone_list ('zone1', 'zone2');# 此时将出现下面的错误信息:
ERROR 4656 (HY000): resource pool unit num is bigger than zone server count# 提示:资源池里一个Zone下的Unit的数目大于这个Zone下Server的数量。

执行下面的语句确定每个Zone下的Server数量:

ob> use oceanbase;
ob> select svr_ip,id, zone from dba_ob_servers;# 输出信息如下:
+---------------+------+-------+
| svr_ip        | id   | zone  |
+---------------+------+-------+
| 192.168.79.11 |    1 | zone1 |
| 192.168.79.12 |    3 | zone1 |
| 192.168.79.13 |    2 | zone2 |
+---------------+------+-------+# 提示:此时zone2中只包含一个OBServer。

修改上面的资源池创建语句如下:

ob> create resource pool rp1 unit 'ru1', unit_num 1, zone_list ('zone1', 'zone2');

通过DBA_OB_RESOURCE_POOLS视图,可以查看所有资源池信息。

ob> select * from dba_ob_resource_pools \G;# 输出的信息如下:
*************************** 1. row ***************************
RESOURCE_POOL_ID: 1NAME: sys_poolTENANT_ID: 1CREATE_TIME: 2025-04-09 14:50:06.003151MODIFY_TIME: 2025-04-09 14:50:06.060751UNIT_COUNT: 1UNIT_CONFIG_ID: 1ZONE_LIST: zone1;zone2REPLICA_TYPE: FULL
*************************** 2. row ***************************
RESOURCE_POOL_ID: 1002NAME: rp1TENANT_ID: NULLCREATE_TIME: 2025-04-09 15:12:09.141263MODIFY_TIME: 2025-04-09 15:12:09.141263UNIT_COUNT: 1UNIT_CONFIG_ID: 1002ZONE_LIST: zone1;zone2REPLICA_TYPE: FULL
2 rows in set (0.001 sec)

切换资源池的资源配置可以调整资源池下每个资源单元的资源规格,进而调整租户在该资源池上的资源规格和服务能力。例如:

ob> create resource unit ru2 max_cpu 1, min_cpu 1, memory_size '2G',log_disk_size '2G' ;
ob> alter resource pool rp1 unit 'ru2';# 提示:这里将资源池rp1的资源单元配从ru1切换到了ru2上。
http://www.jsqmd.com/news/99927/

相关文章:

  • gpt-oss-20b RESTful API设计与集成指南
  • 教育场景适用吗?LobeChat作为教学辅助工具的潜力
  • 【玩转全栈】----Django根本设置和介绍
  • 2025/12/16英语打卡
  • GPT-SoVITS音色相似度优化技巧:提升克隆真实感
  • 项目实践11—全球证件智能识别系统(切换为PostgreSQL数据库)
  • PaddlePaddle语音识别套件实践:集成github镜像提升模块加载效率
  • 2025 年纸碗成型设备实力厂家推荐 (12 月更新):纸杯机、制杯机、全伺服纸杯机、纸碗机、杯盖机等全品类制造商盘点 - 品牌2026
  • Java集合操作(List、Set、Map)
  • MiniCPM-V2.5微调中的CUDA依赖问题解决
  • LobeChat能否支持图表生成?数据可视化回答呈现
  • 2025 托福培训机构优选攻略:从选课逻辑到高分案例全解析 - 品牌测评鉴赏家
  • Windows下Python安装失败?换用清华源重试TensorFlow安装
  • DeepSeek-OCR本地部署:CUDA升级与vLLM配置
  • 2025年托福培训机构怎么选?这5家口碑好的机构帮你高效提分 - 品牌测评鉴赏家
  • Qwen3-32B大模型调用与鉴权指南
  • FPGA 和 IC 岗位前景、薪资对比
  • 腾讯混元开源HunyuanVideo-Foley:实现声画合一的AI音效生成
  • 2025年12月电动升降机,剪叉升降机,高空作业升降机公司推荐:升降机械测评与选购指南 - 品牌鉴赏师
  • 2025年十大隐形车衣优质厂家排行榜,隐形车衣厂家测评指南 - myqiye
  • Git安装Windows版本并配置清华镜像用于TensorFlow贡献开发
  • 时序数据库 or 实时数据库?TDengine以双引擎+AI彻底破局
  • HuggingFace镜像网站推荐列表(国内可用)
  • 31、Linux 系统下的声音文件编辑与磁盘存储实用指南
  • FPGA 面试题目汇总含解析,FPGAer 上岸必备!
  • DiskInfo下载官网替代方案:高效获取YOLO资源
  • SQL条件中WHERE 1=1 的功能
  • TensorRT-LLM如何降低云GPU推理成本60%
  • 蓝牙电话-acceptCall-调用流程
  • 职场技能培训