3. Catalog 租户配额模型

Catalog 租户作为 OceanBase 数据库中的元数据管理核心,其资源使用必须受到严格约束,以防止单个租户的异常行为影响整个集群的元数据服务稳定性。本章详细拆解 Catalog 租户的五类核心配额:CPU、内存、磁盘、会话数、对象数,并说明它们在审批流与容量告警联动中的角色。

3.1 五维配额总览

下表对比了五类配额的定义、默认行为及告警触发维度,是后续审批流设计的基础数据模型。

配额类型 计量单位 核心作用 超限后果 告警联动维度
CPU 配额 核数 (Cores) 限制 Catalog 租户可占用的最大 CPU 时间片 DDL 响应变慢,元数据查询超时 CPU 使用率 > 80% 持续 5 分钟
内存配额 GB 控制租户级内存池上限(包含缓存与执行内存) OOM 导致租户无响应或自动重启 内存使用率 > 85% 触发预警告警
磁盘配额 GB 限制元数据表空间与日志的持久化存储 写入失败,元数据变更无法持久化 磁盘使用率 > 90% 触发紧急告警
会话数配额 个 限制同时连接到 Catalog 租户的最大会话数 新连接被拒绝,应用端报错 当前会话数 / 配额 > 95%
对象数配额 个 限制数据库、表、分区、索引等元数据对象总量 无法创建新对象,DDL 失败 对象数 / 配额 > 90% 触发容量规划告警
设计要点: 对象数配额是 Catalog 租户特有的配额类型,普通用户租户通常不限制对象总数。在审批流中,对象数配额的变更往往需要关联业务侧的元数据增长预测报告。

3.2 配额模型架构图

下图展示了 Catalog 租户配额模型在 OceanBase 集群中的位置,以及五类配额如何与资源池、元数据存储层交互。

Catalog 租户配额模型架构 OceanBase 集群 资源池 (Resource Pool) Catalog 租户 CPU 配额 (核数) 内存配额 (GB) 磁盘配额 (GB) 会话数配额 (个) 对象数配额 (个) 配额变更审批流触发条件 任一配额使用率超过告警阈值 → 自动发起变更审批工单 审批通过后 → 动态调整对应配额 → 告警自动解除

3.3 配额变更的审批流联动逻辑

在审批流设计中,五类配额并非独立变更,而是遵循以下联动规则:

  • CPU + 内存联动: 通常成对变更,因为元数据操作(如大规模 DDL)同时消耗 CPU 和内存。审批流要求两项配额变更必须绑定在同一工单中。
  • 磁盘配额独立审批: 磁盘扩容涉及底层存储资源分配,需要 DBA 确认集群剩余存储空间,审批级别高于 CPU/内存。
  • 会话数配额自动扩缩: 当会话数使用率连续 10 分钟超过 95% 时,系统可自动执行预设的扩容策略(如增加 20%),事后补审批单。
  • 对象数配额预审批: 对象数增长通常由业务规划驱动,变更申请必须附带未来 3 个月的对象增长预测。
关键约束: 任何单一配额的变更都不得导致其他配额的使用率超过 100%。例如,增加内存配额时,必须同步检查 CPU 配额是否足够支撑新增内存带来的并发处理能力。

3.4 配额模型在告警中的映射

容量告警系统需要将五类配额映射为可监控的指标,并设定分级告警策略:

告警级别 触发条件 响应动作 审批流触发
Info 配额使用率 > 70% 记录日志,发送通知给运维人员 不触发
Warning 配额使用率 > 85% 发送告警,自动创建预审批工单 触发预审批流程
Critical 配额使用率 > 95% 立即告警,限制部分非关键操作 触发紧急变更审批

3.5 配额变更的 SQL 示例

在 OceanBase 中,调整 Catalog 租户配额通过 ALTER RESOURCE UNIT 和 ALTER RESOURCE POOL 语句实现。以下是一个典型的 CPU 和内存配额变更示例:

-- 1. 查看当前资源单元配置
SELECT * FROM oceanbase.__all_resource_unit WHERE unit_name = 'catalog_unit';

-- 2. 调整资源单元:CPU 从 4 核增至 8 核,内存从 16G 增至 32G
ALTER RESOURCE UNIT catalog_unit
  MAX_CPU = 8,
  MIN_CPU = 8,
  MEMORY_SIZE = '32G';

-- 3. 将变更应用到 Catalog 租户所在的资源池
ALTER RESOURCE POOL catalog_pool
  UNIT = 'catalog_unit';

-- 4. 验证变更生效
SELECT unit_name, max_cpu, memory_size
FROM oceanbase.__all_resource_unit
WHERE unit_name = 'catalog_unit';
注意: 磁盘配额和对象数配额无法通过 SQL 直接修改,需要在 OCP 控制台或通过内部 API 调整。会话数配额可通过 ALTER SYSTEM SET connections_per_server 参数动态调整,但需重启租户才能完全生效。

3.6 配额模型与审批流的集成点

审批流系统需要从配额模型中读取以下关键字段,用于工单的自动填充和校验:

  • 当前配额值: 变更前的基准值,用于计算变更幅度。
  • 当前使用率: 判断变更的紧急程度,使用率越高,审批优先级越高。
  • 历史变更记录: 最近 30 天的变更次数,防止频繁变更导致系统不稳定。
  • 关联租户信息: Catalog 租户所属的集群、地域、业务线,用于路由到对应的审批人。

通过将五维配额模型与审批流、容量告警系统深度集成,可以实现 Catalog 租户资源管理的自动化、可追溯和智能化,避免因资源不足或过度分配导致的元数据服务故障。