每天10分钟学会OceanBase系列(Day 16):租户管理与资源隔离,给不同业务穿上”隔离衣”

📅 2026/8/2 15:59:11
每天10分钟学会OceanBase系列(Day 16):租户管理与资源隔离,给不同业务穿上”隔离衣”
1. 引言嗨各位OceanBase探索者昨天我们聊了高可用演练有同学问“要是同时宕两个节点会怎样”好问题不过今天我们先放一放极端场景来聊聊生产环境中最让人头疼的日常资源抢占。想象一下你和几个朋友合租一套公寓如果水电表是共用的遇到个天天在家开暖气、洗长澡的室友你是不是得跟着遭殃数据库也一样如果报表查询和核心交易混在一起一个写得不好的慢查询就能把整个集群的CPU吃满导致核心业务直接“断网”。今天我们就来学学OceanBase的多租户架构看看怎么给不同业务穿上“隔离衣”2.核心概念什么是租户在OceanBase里租户Tenant就像是一台“虚拟数据库”。虽然底层的物理机器是大家共用的但每个租户都拥有自己独立的内存、CPU配额和磁盘空间。OceanBase支持两种模式的租户MySQL模式和Oracle模式。这意味着你可以用熟悉的MySQL客户端连进去也可以用Oracle的语法互不干扰。它的资源隔离层级非常清晰就像俄罗斯套娃集群Cluster→租户Tenant→资源池ResourcePool→资源单元Unit。 集群是物理底座租户是逻辑隔离资源池是资源的分配方案而资源单元则是真正干活的“小房间”包含具体的CPU和内存大小。3.10分钟实操创建与管理租户光说不练假把式让我们打开终端用SQL来实操一下-- 1. 查看当前集群中的所有租户-- 看看你的集群里住了哪些“租客”SELECTtenant_id, tenant_name, status, primary_zoneFROMoceanbase.DBA_OB_TENANTS;-- 2. 创建一个MySQL模式的新租户-- 指定租户名、副本数3副本保平安、字符集以及绑定的资源池CREATETENANT my_biz_tenantCHARSETutf8mb4PRIMARY_ZONEzone1RESOURCE_POOL_LIST(pool_my_biz)SETob_tcp_invited_nodes%;-- 允许所有IP连接生产环境建议限制网段-- 3. 查看租户的资源使用情况-- 监控每个租户的CPU、内存和磁盘水位防止“租客”偷偷搞破坏SELECTtenant_name, cpu_assigned, memory_assigned, disk_assignedFROMoceanbase.DBA_OB_TENANTS;-- 4. 调整租户的资源规格扩缩容-- 业务增长太快没关系给租户“升个舱”ALTERTENANT my_biz_tenant RESOURCE_POOL_LIST(pool_my_biz_larger);-- 5. 删除租户-- 业务下线了记得清理“空房间”释放资源DROPTENANT my_biz_tenantFORCE;-- FORCE表示强制删除跳过回收站4.资源隔离实战让报表和交易各跑各的场景痛点公司的核心交易OLTP和数据分析报表OLAP跑在同一个集群里。一到月底报表查询疯狂消耗CPU导致用户下单卡顿。解决方案利用资源单元Unit和资源池Resource Pool进行物理级隔离。-- 1. 为交易业务创建“VIP包厢”高配资源单元CREATERESOURCEUNIT unit_transactionMAX_CPU4, MEMORY_SIZE8G, MAX_IOPS10000;-- 2. 为报表业务创建“经济舱”低配资源单元CREATERESOURCEUNIT unit_reportMAX_CPU2, MEMORY_SIZE4G, MAX_IOPS5000;-- 3. 创建资源池将单元分配给对应的租户CREATERESOURCEPOOL pool_transaction UNITunit_transaction, UNIT_NUM3;CREATERESOURCEPOOL pool_report UNITunit_report, UNIT_NUM1;-- 4. 将租户绑定到指定的资源池-- 这样交易和报表就彻底分家了报表再慢也拖不垮交易ALTERTENANT transaction_tenant RESOURCE_POOL_LIST(pool_transaction);ALTERTENANT report_tenant RESOURCE_POOL_LIST(pool_report);5.运维避坑指南⚠️在生产环境玩多租户这几条“保命法则”请牢记租户数量不宜过多虽然OceanBase支持多租户但并不是越多越好。过多的租户会增加元数据的管理复杂度建议根据业务线合理划分而不是每个小应用建一个租户。资源规格要预留余量给租户分配资源时千万别把集群资源100%分完。一定要留点“缓冲垫”应对突发的流量洪峰。定期清理无用租户测试完的租户、下线的业务记得及时DROP掉别让僵尸租户白白占用资源配额。监控租户级别的资源使用率不要只看集群整体监控一定要配置租户级别的告警。哪个租户CPU飙高了第一时间定位到它6.今日小结今天我们从“合租公寓”的比喻出发深入了解了OceanBase的多租户架构和资源隔离机制。通过创建资源单元和资源池我们成功地把交易和报表分家让核心业务不再受慢查询的连累。用一句话概括今天的核心租户管理就是“分房间、配资源、定规矩”。掌握了这个你就拿到了OceanBase生产环境运维的VIP门票7.课后思考今天我们学会了给租户分配资源但如果某个租户“太贪心”把分配给它的磁盘空间用到了95%OceanBase会自动做什么来保护整个集群和其他租户呢