零基础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):查看集群基本信息

相关推荐
SelectDB技术团队13 分钟前
Apache Doris 基于 Lance 的向量检索深度解析
数据库·数据仓库·数据分析·湖仓一体·apache doris·lakehouse·多模湖仓
这个DBA有点耶28 分钟前
从INDEX到JOIN_ORDER:MySQL 8.0 Hint语法体系与五类实战场景
数据库·mysql·架构
数字新视界33 分钟前
机房动环监控助力智能管理
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
梅菲塔亚37 分钟前
博客_Redis入门到实战
数据库·redis·缓存
abcyuu41 分钟前
用友 U8 Cloud 生产制造模块深度解析:从 BOM 建立到成本核算的技术实现
前端·数据库·制造
夜雪一千43 分钟前
MySQL 的ID用什么数据类型更好?主键ID选型实战
数据库·mysql
蓝胖的四次元口袋1 小时前
Redis 知识梳理(3)
数据库·redis·缓存
一铭111991 小时前
海豹办公 1.9.15 跨端办公软件实践 文档兼容 Access 数据库与移动 WebView 排错
android·数据库·electron·开源软件·access
Lynne3091 小时前
TSN 在变电站自动化通信网络升级中的应用价值与技术挑战
服务器·网络·数据库
弈栈录1 小时前
用户、会话与消息表应该如何设计
数据库·后端