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

对比Mysql理解OceanBase中的租户设计

1. OceanBase 中的“租户”是什么?

MySQL 中,默认的资源管理颗粒度是 数据库(Database) ,同一个 MySQL 实例里所有用户共享 CPU、内存等实例级资源。

OceanBase分布式、多租户 架构的数据库,租户(tenant) 是它最顶层的逻辑隔离单元。

  • 每个租户就像一个独立的 MySQL 实例(或 Oracle 实例)
  • 租户之间数据、系统表、用户、资源(CPU、内存、存储空间、带宽)都是隔离的
  • 一个 OceanBase 集群可以同时运行多个租户,租户之间互不影响
  • 一个租户可以使用 MySQL 模式Oracle 模式

可以理解为:

“在 OceanBase 中,租户相当于 MySQL 的‘实例’,而不是单纯的数据库。”


2. 为什么要设计“租户”?

设计多租户主要有几个目的:

  1. 资源隔离

    • 在大规模业务场景下,有多个业务系统要用数据库,如果共用一个 MySQL 会互相抢资源。
    • OceanBase 把每个业务放到不同的租户中,每个租户分配固定 CPU、内存等,互不干扰。
  2. 安全隔离

    • 不同租户的数据完全独立,甚至元数据也不共享。
    • 一个租户的 DBA 无法访问另一个租户的数据。
  3. 多协议支持

    • 一个租户可以跑 MySQL 协议,另一个租户可以跑 Oracle 协议。
  4. 更易运维和弹性

    • 业务租户可以单独扩容/缩容,不影响其他业务。

3. 从 MySQL 视角理解租户

MySQLOceanBase
实例(Instance)集群(Cluster)
数据库(Schema)数据库(Schema)
用户(User)用户(User)- 属于某个租户
实例级资源共享租户级资源独立控制
单进程/多线程多节点分布式多租户

所以在 OB 里,租户是一级概念,数据库属于某个租户,不同租户的数据库不能直接访问。


4. OceanBase MySQL 模式租户管理常用命令

OceanBase 的租户是由 sys 租户(系统管理员)管理的。sys 租户是集群创建时自动生成的超级租户,有权创建/删除其他租户。

(1)查看租户

-- 登录 sys 租户(通常使用 root@sys 用户)
SELECT * FROM oceanbase.DBA_OB_TENANTS;

常见字段:

  • tenant_id 租户 ID
  • tenant_name 租户名
  • compatibility_mode 租户兼容模式(MySQL / Oracle)
  • status 状态

(2)创建租户(MySQL 模式)

CREATE TENANT tenant_mysqlCHARSET='utf8mb4'SET ob_tcp_invited_nodes='%'  -- 允许哪些IP访问REPLICA_NUM = 3               -- 副本数ZONE_LIST = ('zone1', 'zone2', 'zone3') -- 部署在哪些 ZonePRIMARY_ZONE = 'RANDOM'       -- 主 Zone 策略RESOURCE_POOL_LIST = ('pool_mysql');

这里的 pool_mysql 是资源池名,资源池要先创建。


(3)创建资源池(分配 CPU/内存等)

CREATE RESOURCE UNIT unit_mysql MAX_CPU=2, MEMORY_SIZE='2G';
CREATE RESOURCE POOL pool_mysql UNIT='unit_mysql',UNIT_NUM=1,ZONE_LIST=('zone1','zone2','zone3');

(4)切换到某个租户
OceanBase 是多租户架构,不同租户是独立的,所以需要在登录时指定:

obclient -h <ip> -P <port> -u root@tenant_mysql -p

root@tenant_mysql 表示登录租户 tenant_mysql 中的 root 用户。


(5)删除租户

DROP TENANT tenant_mysql FORCE;

FORCE 用于强制删除,包括租户内数据。


(6)修改租户资源

ALTER RESOURCE UNIT unit_mysql MAX_CPU=4, MEMORY_SIZE='4G';

或者直接调整租户的资源池绑定不同的 unit


5. 租户 vs MySQL 数据库的对比总结

特性MySQL 实例OceanBase 租户
数据隔离不同数据库共享实例完全隔离
资源隔离不支持支持 CPU/内存 等静态/动态调整
网络隔离不支持通过 ob_tcp_invited_nodes 控制
模式协议MySQLMySQL 或 Oracle
多业务场景容易互相影响互不影响

一句话记忆

在 OceanBase 里,租户是“逻辑独立的数据库实例”,拥有自己的数据库、用户、资源配额、协议模式。sys 租户像云平台的管理员,负责创建/删除其他租户。


帮你画了一张 OceanBase MySQL 模式多租户架构图,把 sys 租户、业务租户、资源池、unit、zone 的关系都直观展示出来。
这样你从 MySQL 转 OceanBase 会更容易理解。


OceanBase MySQL 模式多租户架构示意图

                ┌───────────────────────────┐│       OceanBase 集群       ││  (多个节点 + 多个 Zone)    │└─────────────┬─────────────┘│┌────────────────────────┴───────────────────────────┐│                                                      │
┌────────────┐                                        ┌─────────────┐
│  sys 租户  │   <--- 系统管理员租户                   │  业务租户1   │ (MySQL 模式)
│ (root@sys) │   - 创建/删除租户                        │ tenant_mysql│
└─────┬──────┘   - 管理资源池 / Unit                   └─────┬───────┘│                                                   ││                                                   ││                                                   │┌───▼───────────┐      ┌──────────────────┐       ┌────▼───────────┐│ 资源池 pool_1 │      │ 资源池 pool_mysql │       │ 资源池 pool_orc│└───┬───────────┘      └───────┬──────────┘       └────┬───────────┘│                           │                         │┌───▼───────┐               ┌───▼───────┐             ┌──▼─────────┐│ Unit unit1│               │Unit unit_mysql│         │Unit unit_orc││ MAX_CPU=2 │               │MAX_CPU=4  │         │...          ││ MEM=4G    │               │MEM=8G     │         │              │└────┬──────┘               └────┬──────┘         └───────┬──────┘│                           │                          │┌────▼─────────┐           ┌─────▼───────────┐        ┌────▼─────────┐│ Zone1 节点   │           │ Zone1 节点      │        │ Zone1 节点   │├──────────────┤           ├────────────────┤        ├──────────────┤│ Zone2 节点   │   ...     │ Zone2 节点      │  ...   │ Zone2 节点   │├──────────────┤           ├────────────────┤        ├──────────────┤│ Zone3 节点   │           │ Zone3 节点      │        │ Zone3 节点   │└──────────────┘           └────────────────┘        └──────────────┘

图中概念对应说明:

  1. 集群(Cluster)

    • 整个 OceanBase 的部署单元,由多个节点组成,节点分布在不同的 Zone(机房 / 可用区)。
    • Zone 用于实现高可用(多副本)。
  2. sys 租户

    • 默认存在的超级管理员租户。
    • 负责集群和租户的整体管理,例如创建/删除租户,分配资源池。
  3. 业务租户

    • 每个业务一个租户,租户之间完全隔离。
    • 可选择运行 MySQL 模式Oracle 模式
    • 租户内可有多个数据库(Schema)和用户。
  4. 资源池(Resource Pool)

    • 租户必须绑定到一个或多个资源池,才能运行。
    • 资源池由 资源单元(Resource Unit) 构成,分配 CPU、内存、IO 等上限。
  5. 资源单元(Unit)

    • 资源分配的最小颗粒度。
    • Unit 会分布在不同 Zone 的节点上,保证高可用性。
  6. Zone

    • 地理/机房的逻辑分组,通常3个Zone做三副本,提升容灾能力。

MySQL 用户迁移到 OceanBase 思维转换

MySQL 概念OceanBase 概念
实例租户
用户租户内的用户
多业务共用实例多租户架构,不同业务不同租户
分配实例资源分配租户的资源池(限制CPU/MEM等)

http://www.dtcms.com/a/362166.html

相关文章:

  • PostgreSQL 从入门到精通:一场与开源数据库的深度对话
  • 时序数据库国产的有哪些?
  • 利用棒棒糖图探索Office (US)的IMDB评分
  • 毕业项目推荐:64-基于yolov8/yolov5/yolo11的蝴蝶种类检测识别系统(Python+卷积神经网络)
  • 如何修复 Vercel 函数超时并大幅降低云函数成本
  • 计组(2)CPU与指令
  • 我的学习经历,个人能力说明书,求职书
  • 伺服器模拟输入控制电机转速
  • 华为云CCE
  • 【计算岗位解析:从代码到产品,这些角色如何“造”出数字世界?】
  • SpringBoot的基础介绍,用法和配置
  • 线上API接口响应慢?一套高效排查与定位问题的心法
  • PyTorch 面试题及详细答案120题(96-105)-- 性能优化与调试
  • Java类的初始化顺序
  • 问题解决方法:qt的设计师页面怎么开启scroll area组件的滚轮功能
  • 【ElasticSearch实用篇-04】Boost权重底层原理和基本使用
  • 机器学习入门,非线性模型的预测方法之多项式
  • 后端笔试题-多线程JUC相关
  • M13 噬菌体展示技术:载体与结构深度解析
  • Git软件版本控制
  • 贵州在假期及夏天结束后保持旅游活力的策略分析
  • elasticsearch中文分词器analysis-ik使用
  • 《山东棒球》板球比赛规则·棒球1号位
  • c语言2:关于变量
  • Robomaster电机控制和serialplot串口绘图(通用)
  • 定时器设计之->分级时间轮
  • Kubernetes 中根据 Pod IP 查找 Pod 及关联服务的方法
  • 蜂窝物联网模组:电动两轮车新国标实施下的关乎安全与智能化支撑
  • 车辆轨迹数据实时同步方案:从 “定时轮询” 到 “消息驱动” 的升级实践
  • Qt Widgets 之 QAbstractButton