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

相关推荐
cui_ruicheng4 小时前
MySQL(四):数据类型与字段设计
数据库·mysql
皮皮学姐分享-ppx5 小时前
政府绿色采购数据库(2015-2024.3)
大数据·网络·数据库·人工智能·制造
闪电悠米7 小时前
黑马点评-Redis 消息队列-03_stream_consumer_group
开发语言·数据库·redis·分布式·缓存·junit·lua
DIY源码阁7 小时前
JavaSwing航班订票管理系统 - MySQL版
数据库·mysql
浪客灿心9 小时前
项目篇:模块设计与实现
数据库·c++
流星白龙10 小时前
【MySQL高阶】26.事务(1)
数据库·mysql
三十..11 小时前
Redis 核心原理与高可用架构实践
运维·数据库·redis
这个DBA有点耶11 小时前
索引优化深潜(下):索引合并、ICP 与索引设计的实战法则
数据库·mysql·架构
努力努力再努力wz11 小时前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表
JdSnE27zv12 小时前
Qt 操作SQLite数据库
数据库·qt·sqlite