零基础OceanBase数据库入门(3):创建租户

租户是OceanBase多租户架构的核心,相当于传统数据库的独立实例,租户间资源隔离、数据互不干扰,今天就跟着官方demo流程,从零创建一个可用的MySQL模式租户。

一、OceanBase租户是什么?

简单说,OceanBase的租户 = MySQL的独立实例。

  • 一套OB集群可创建多个租户,每个租户独占CPU、内存、磁盘等资源,互不影响;

  • 租户支持MySQL兼容模式和Oracle兼容模式,我们用all-in-one部署的社区版仅支持MySQL模式;

  • 创建租户有固定流程:资源规格 → 资源池 → 租户,三步缺一不可。

二、 实操演示

  1. 连接系统租户

创建租户必须用sys租户(系统管理员租户)操作,先连接到集群:

ruby 复制代码
# 连接sys租户(IP、端口、密码用自己部署的)[admin@ob ~]$ obclient -h127.0.0.1 -P2881 -uroot@sys -p'1K4TjgkntnXm3r2nAGLE' -Doceanbase -A

连接成功后,就可以开始三步创建租户。

  1. 创建资源规格(Resource Unit)

资源规格是CPU、内存、磁盘、IOPS的资源模板,定义租户能使用的资源上限,是创建租户的基础。

2.1 查看默认资源规格

系统自带sys_unit_config,用于sys租户,我们先查看:

css 复制代码
SELECT * FROM DBA_OB_UNIT_CONFIGS;

2.2 创建自定义资源规格

创建名为s1_unit_config的规格,配置:1核CPU、2G内存、6G日志盘:

apache 复制代码
CREATE RESOURCE UNIT s1_unit_configMEMORY_SIZE = '2G',MAX_CPU = 1, MIN_CPU = 1,LOG_DISK_SIZE = '6G',MAX_IOPS = 10000, MIN_IOPS = 10000, IOPS_WEIGHT=1;

关键参数说明:

  • MAX_CPU/MIN_CPU:CPU上下限,必选;

  • MEMORY_SIZE:内存大小,最小1G,OB4.0+不支持内存超卖;

  • LOG_DISK_SIZE:日志盘,不填默认是内存的3倍,最小2G。

2.3 验证创建结果

再次运行脚本查看

css 复制代码
SELECT * FROM DBA_OB_UNIT_CONFIGS ;
  1. 创建资源池(Resource Pool)

资源池绑定资源规格,指定资源分布的Zone,是资源规格与租户之间的桥梁。

3.1 查看默认资源池

系统自带sys_pool,供sys租户使用:

css 复制代码
SELECT * FROM DBA_OB_RESOURCE_POOLS;

3.2 创建自定义资源池

创建名为mq_pool_01的资源池,绑定s1_unit_config,部署在zone1:

makefile 复制代码
CREATE RESOURCE POOL mq_pool_01UNIT='s1_unit_config',UNIT_NUM=1,ZONE_LIST=('zone1');

关键参数说明:

  • UNIT:绑定的资源规格名称

  • UNIT_NUM:单Zone的Unit数量,小于节点数

  • ZONE_LIST:资源池部署的Zone,单机环境默认zone1

3.3 验证创建结果

运行脚本查看创建结果

sql 复制代码
SELECT * FROM DBA_OB_RESOURCE_POOLS WHERE NAME = 'mq_pool_01';
  1. 创建租户(Tenant)

资源池就绪后,即可创建租户,指定资源池、兼容模式、连接白名单。

4.1 查看现有租户

默认只有sys租户:

css 复制代码
SELECT * FROM DBA_OB_TENANTS;

obshell页面上也可以看到

4.2 创建MySQL模式租户

创建名为mq_t1的租户,允许所有IP连接,绑定mq_pool_01:

sql 复制代码
CREATE TENANT IF NOT EXISTS mq_t1PRIMARY_ZONE='zone1',RESOURCE_POOL_LIST=('mq_pool_01')SET OB_TCP_INVITED_NODES='%';

关键参数说明:

  • IF NOT EXISTS:避免重名报错

  • PRIMARY_ZONE:租户优先提供读写服务的Zone

  • RESOURCE_POOL_LIST:绑定的资源池,必填

  • OB_TCP_INVITED_NODES='%':允许所有IP连接,默认仅允许本机

4.3 验证租户创建

sql 复制代码
SELECT * FROM DBA_OB_TENANTS WHERE TENANT_NAME = 'mq_t1';

此时obshell页面查看结果如下:

  1. 登录新租户+修改默认密码

租户创建后,默认管理员密码为空,必须及时修改。

5.1 退出sys租户,登录新租户

nginx 复制代码
# 退出当前连接exit# 登录新租户mq_t1obclient -h127.0.0.1 -P2881 -uroot@mq_t1 -A

5.2 修改root密码

nginx 复制代码
# 修改密码为123456(生产环境用复杂密码)ALTER USER root IDENTIFIED BY '123456';

5.3 用新密码重新登录

nginx 复制代码
obclient -h127.0.0.1 -P2881 -uroot@mq_t1 -p'123456' -A

登录成功,说明租户完全可用!

六、小结

本文我们完成了OceanBase租户创建全流程,核心记住三步法:

  • 定义资源规格(CREATE RESOURCE UNIT)

  • 绑定资源池(CREATE RESOURCE POOL)

  • 最终创建租户(CREATE TENANT)

另外总结一下重要注意事项:

  • 社区版限制:all-in-one部署的社区版仅支持MySQL模式租户,Oracle模式需企业版;

  • 资源规划:所有租户的MIN_CPU总和不能超过节点CPU总容量,避免资源不足;

  • 密码安全:生产环境严禁使用空密码/简单密码,及时修改管理员密码;

  • 白名单:OB_TCP_INVITED_NODES建议限定IP,不建议用%开放所有连接。

租户创建完成后,就可以在租户内创建数据库、用户、数据表,和使用MySQL几乎无差别。下一篇我们将学习在租户内创建数据库与表,彻底完成从部署到使用的全流程。

往期回顾:

零基础OceanBase数据库入门(1):单机版部署

零基础OceanBase数据库入门(2):查看集群基本信息

相关推荐
l1t2 小时前
DeepSeek总结的 PostgreSQL 19:为 UPDATE/DELETE 添加 FOR PORTION OF 子句
大数据·数据库·postgresql
RestCloud2 小时前
如何用ETL实现多租户数据库的数据隔离与整合
数据库·数据仓库·etl·etlcloud·数据同步·数据集成平台·数据库传输
悢七2 小时前
单机部署 OceanBase 集群
数据库·ffmpeg·oceanbase
gjc5922 小时前
零基础OceanBase数据库入门(4):创建MySQL模式数据库
数据库·mysql·oracle·oceanbase
知识分享小能手2 小时前
MongoDB入门学习教程,从入门到精通,MongoDB创建副本集知识点梳理(10)
数据库·学习·mongodb
老衲提灯找美女2 小时前
数据库事务
java·大数据·数据库
会飞的大可3 小时前
Redis 竞品与替代方案选型可行性分析报告
数据库·redis·缓存
周杰伦的稻香3 小时前
PostgreSQL基础命令
数据库·postgresql
先做个垃圾出来………3 小时前
JSON序列化问题
数据库·json