OceanBase数据库-学习笔记4-租户

租户

租户偏向于资源层面的逻辑概念,是在物理节点上划分的资源单元,可以指定其资源规格,包括 CPU、内存、日志盘空间、IOPS 等。

租户类似于传统数据库的数据库实例,租户通过资源池与资源关联,从而独占一定的资源配额,可以动态调整资源配额。在租户下可以创建 Database、表、用户等数据库对象。

OceanBase 数据库 4.0 开始,有三种类型的租户:系统租户用户租户以及每个用户租户对应的 Meta 租户

租户 ID 为 1 的是系统租户。租户 ID 大于 1000 的租户中,偶数的是用户租户,奇数的是 Meta 租户,并且用户租户的租户 ID 比其对应 Meta 租户大 1。

SELECT TENANT_ID,TENANT_NAME,TENANT_TYPE,PRIMARY_ZONE,COMPATIBILITY_MODE,STATUS,UNIT_NUM,COMPATIBLE,MAX_LS_ID FROM DBA_OB_TENANTS;

查看租户视图

系统租户

  • 系统租户是集群默认创建的租户与集群生命期一致,负责管理集群和所有租户的生命周期。系统租户仅有一个 1 号日志流,只支持单点写入,不具备扩展能力
  • 系统租户定位于集群管理和租户管理,不提供完整的数据库功能,不推荐在生产或业务测试等场合使用。

用户租户

  • 与系统租户对应的是用户租户,用户租户是由用户创建的租户
  • 对外提供完整的数据库功能
  • 支持 MySQL 和 Oracle 两种兼容模式。

用户租户介绍

用户租户与通常所见的数据库管理系统相对应,可以被看作是一个数据库实例。它由系统租户根据业务需要所创建出来。 用户租户具备一个实例所应该具有的所有特性,主要包括:

  • 可以创建自己的用户
  • 可以创建数据库(database,仅 MySQL 兼容模式支持)、表(table)等所有客体对象
  • 有自己独立的系统表和系统视图
  • 有自己独立的系统变量
  • 数据库实例所具备的其他特性

所有用户数据的元信息都存储在用户租户下,所以每个租户都有自己的命名空间,并且彼此隔离不可访问。系统租户管理所有用户租户,系统租户与用户租户之间的层级关系如下图所示。

tenants

在用户租户下创建的用户,只能登录到本租户,对其他租户不可见。

  • 对于 MySQL 兼容模式的租户,可以从视图 mysql.user 中查询用户信息。
  • 对于 Oracle 兼容模式的租户,可以从系统视图 ALL_USERS 中查询用户信息。

在用户租户下可以创建表,创建后对其他租户不可见。

  • 对于 MySQL 兼容模式的租户,可以从 information_schema.tables 视图中查询本租户所有用户表的信息。
  • 对于 Oracle 兼容模式的租户,可以从 ALL_TABLES 视图中查询本租户所有用户表的信息。

用户租户只能在本租户下修改本租户的系统变量。

  • 对于 MySQL 兼容模式的租户,可以从 information_schema.global_variablesinformation_schema.session_variables 视图中查询系统变量信息。也可以通过 SHOW VARIABLES 语句查询。
  • 对于 Oracle 兼容模式的租户,可以通过 SHOW VARIABLES 语句来查询本租户所有的系统变量。

Meta租户

  • Meta 租户是 OceanBase 数据库内部自管理的租户。
  • 每创建一个用户租户会创建一个对应的 Meta 租户,其生命周期与用户租户保持一致。
  • Meta 租户用于存储和管理用户租户的租户私有数据。
  • Meta 租户不可登录,普通用户只能通过系统租户的视图查询 Meta 租户下的数据。
  • Meta 租户没有独立的 Unit,创建租户时默认为 Meta 租户预留资源,各项资源从用户租户资源中扣除。

前置概念

租户通过资源池与资源关联,从而获取可用的资源。租户和资源池相辅相成的关系。

概念对应视图描述
资源规格DBA_OB_Unit_CONFIGS资源规格定义了常见物理资源项的大小,包括 CPU、内存、磁盘空间、IOPS 等。创建资源池时指定其资源规格,从而根据定义创建资源单元。
资源单元(Unit)DBA_OB_UnitSUnit 是租户管理中非常重要的概念。OceanBase 按照 Unit 来管理物理资源,是 CPU、内存、存储空间、IOPS 等物理资源的集合Unit 也是资源调度的基本单位,其具有节点、Zone、Region 等位置属性,节点是服务器的抽象,Zone 是机房的抽象,Region 是地域的抽象,通过调整 Unit 的位置属性从而调整租户的部署方式。
资源池DBA_OB_RESOURCE_POOLS每个 Unit 都归属于一个资源池,每个资源池由若干个 Unit 组成,资源池是资源分配的基本单位同一个资源池内的各个 Unit 具有相同的资源规格,即该资源池内 Unit 的物理资源大小都相同。
租户DBA_OB_TENANTS

通过 Unit 的概念,我们将 OceanBase 数据库的物理概念和逻辑概念进行了关联。每个租户有若干 Unit,分布于若干 Zone 的若干节点上。而每个节点上分布有若干个 Unit,这些 Unit 归属于不同租户。概括的讲:集群由节点组成,节点是 Unit 的容器。租户由 Unit 组成,Unit 是数据库对象的容器。

在这里插入图片描述

创建租户时通过设置 RESOURCE_POOL_LIST,可以指定该租户关联到的资源池,从而该租户拥有指定资源池的 Unit。例如:设置租户 a 的 RESOURCE_POOL_LIST=(‘a_pool’),其部署图如下:
resource-pool

创建租户

创建租户的流程

OceanBase 数据库仅支持创建用户租户,系统租户由集群创建时自动创建。创建用户租户是一系列操作的组合,首先创建资源规格,然后基于该资源规格创建资源池,最后创建租户并指定其资源池。所以创建租户的顺序为:资源规格 -> 资源池 -> 租户。

步骤一:创建资源规格

创建一个名称为 S1_unit_config 的资源规格,其资源配置为 CPU 为 1 核,内存 5G,日志盘空间 6G

CREATE RESOURCE UNIT S1_unit_configMEMORY_SIZE = '5G',MAX_CPU = 1, MIN_CPU = 1,LOG_DISK_SIZE = '6G',MAX_IOPS = 10000, MIN_IOPS = 10000, IOPS_WEIGHT=1;

步骤二:创建资源池

创建一个名为 mq_pool_01 的资源池,在 zone1 里创建 1 个 UnitUnit 的资源规格为 S1_unit_config

CREATE RESOURCE POOL mq_pool_01 UNIT='S1_unit_config', UNIT_NUM=1, ZONE_LIST=('zone1'); 

步骤三:创建租户

创建一个名为 mq_t1 的租户(默认为 MySQL 模式租户),副本数为 2,资源池指定为 mq_pool_01Primary Zonezone1,允许所有 IP 连接数据库。

CREATE TENANT IF NOT EXISTS mq_t1 PRIMARY_ZONE='zone1', RESOURCE_POOL_LIST=('mq_pool_01')set OB_TCP_INVITED_NODES='%';

查询创建的租户

SELECT c.TENANT_ID, e.TENANT_NAME, concat(c.NAME, ': ', d.NAME) `pool:conf`, concat(c.UNIT_COUNT, ' unit: ', d.min_cpu, 'C/', ROUND(d.MEMORY_SIZE/1024/1024/1024,0), "G") unit_info-> FROM DBA_OB_RESOURCE_POOLS c, DBA_OB_UNIT_CONFIGS d, DBA_OB_TENANTS e-> WHERE c.UNIT_CONFIG_ID=d.UNIT_CONFIG_ID AND c.TENANT_ID=e.TENANT_ID AND c.TENANT_ID>1000-> ORDER BY c.TENANT_ID;
+-----------+-------------+----------------------------+---------------+
| TENANT_ID | TENANT_NAME | pool:conf                  | unit_info     |
+-----------+-------------+----------------------------+---------------+
|      1002 | mq_t1       | mq_pool_01: S1_unit_config | 1 unit: 1C/1G |
+-----------+-------------+----------------------------+---------------+
1 row in set (0.033 sec)obclient(root@sys)[oceanbase]> 

查看租户视图

以上就是本次的分享,感谢阅读。

上一章:《OceanBase数据库-学习笔记3-Oceanbase相关命令》
下一章:《OceanBase数据库-学习笔记5-用户》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/81105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UNIAPP项目记录

一、通过 vue-cli 创建 uni-app 项目 创建 vue3 项目 创建以 javascript 开发的工程(如命令行创建失败,请直接访问 gitee 下载模板) npx degit dcloudio/uni-preset-vue#vite my-vue3-project复制代码 npx degit dcloudio/uni-preset-vue#vit…

华为发布全球首个L3商用智驾ADS4.0

2024年10月2024世界智能网联汽车大会上,余承东讲到:“华为ADS 4.0将于2025年推出高速L3级自动驾驶商用及城区L3级自动驾驶试点,希望加快L3级自动驾驶标准的进程,推动L3级自动驾驶技术的普及。” 世界智能网联汽车大会演讲PPT 所以…

【Python学习路线】零基础到项目实战

目录 🌟 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 🧠 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 💻 二、实战演示环境配置要求核心代码实现运行结果验证 ⚡ 三、性能对比测试方法论量化数据对比…

解决redis序列号和反序列化问题

最近遇到了一个问题,将 List<Map<String, Object>> 类型数据以list形式存入到redis之后,发现取出来时数据格式完全不对,根据报错信息发现是反序列化问题,遇到类似问题,主要有两种解决方案1.使用序列号工具 例如&#xff0c;Java中常用的序列化工具有Jackson、Gso…

Android学习总结之设计场景题

设计图片请求框架的缓存模块 核心目标是通过分层缓存策略&#xff08;内存缓存 磁盘缓存&#xff09;提升图片加载效率&#xff0c;同时兼顾内存占用和存储性能。以下是针对 Android 面试官的回答思路&#xff0c;结合代码注释说明关键设计点&#xff1a; 一、缓存架构设计&…

Webug3.0通关笔记14 第十四关:存储型XSS

目录 第十四关:存储型XSS 1.打开靶场 2.源码分析 3.渗透实战 第十四关:存储型XSS 本文通过《webug3靶场第十四关 存储型XSS》来进行存储型XSS关卡的渗透实战。 存储型 XSS&#xff08;Stored Cross - Site Scripting&#xff09;&#xff0c;也被称为持久型 XSS&#xff…

Java父类、子类实例初始化顺序详解

1、完整的初始化顺序&#xff08;含继承&#xff09; 1、父类的静态初始化 父类静态变量默认值 → 父类静态变量显式赋值 父类静态代码块&#xff08;按代码顺序执行&#xff09;。 2、子类的静态初始化 子类静态变量默认值 → 子类静态变量显式赋值 子类静态代码块&…

13.组合模式:思考与解读

原文地址:组合模式&#xff1a;思考与解读 更多内容请关注&#xff1a;7.深入思考与解读设计模式 引言 在软件开发中&#xff0c;是否曾经遇到过这样一种情况&#xff1a;你有一个对象&#xff0c;它本身很简单&#xff0c;但是它包含了其他类似的对象。随着系统变得越来越复…

OpenCV实战教程 第一部分:基础入门

第一部分&#xff1a;基础入门 1. OpenCV简介 什么是OpenCV及其应用领域 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库&#xff0c;于1999年由Intel公司发起&#xff0c;现在由非营利组织OpenCV.org维护。Ope…

虚幻商城 Quixel 免费资产自动化入库(2025年版)

文章目录 一、背景二、问题讲解1. Quixel 免费资产是否还能一键入库?2. 是不是使用了一键入库功能 Quixel 的所有资产就能入库了?3. 一键入库会入库哪些资产?三、实现效果展示四、实现自动化入库五、常见问题1. 出现401报错2. 出现429报错3. 入库过于缓慢4. 入库 0 个资产一…

uni-app - 小程序使用高德地图完整版

文章目录 🍉功能描述🍉效果🍉开发环境🍉代码部分🍉功能描述 页面自动通过定位获取用户位置并展示周边POI数据,同时支持关键词输入实时联想推荐关联地点信息, 实现精准智能的地点发现与检索功能。 🍉效果 🍉开发环境 unibest2.5.4nodev18.20.5pnpm9.14.2wot-des…

牛客:AB4 逆波兰表达式求值

链接&#xff1a;逆波兰表达式求值_牛客题霸_牛客网 题解&#xff1a; 利用栈&#xff0c;遍历字符串数组&#xff0c;遇到运算数则入栈&#xff0c;遇到运算符则取出栈顶两个运算数进行运算&#xff0c;并将运算结果入栈。 class Solution { public:/*** 代码中的类名、方法…

Ant(Ubuntu 18.04.6 LTS)安装笔记

一、前言 本文与【MySQL 8&#xff08;Ubuntu 18.04.6 LTS&#xff09;安装笔记】同批次&#xff1a;先搭建数据库&#xff0c;再安装JDK&#xff0c;后面肯定就是部署Web应用。其中Web应用的部署使用 Ant 方式&#xff0c;善始善终&#xff0c;特以笔记。 二、准备 &#xf…

ultralytics 目标检测 混淆矩阵 背景图像 没被记录

修改 utils/metrics.py ConfusionMatrix def process_batch(self, detections, gt_bboxes, gt_cls):"""Update confusion matrix for object detection task.Args:detections (Array[N, 6] | Array[N, 7]): Detected bounding boxes and their associated inf…

iview 如何设置sider宽度

iview layout组件中&#xff0c;sider设置了默认宽度和最大宽度&#xff0c;在css样式文件中修改无效&#xff0c;原因是iview默认样式设置在了element.style中&#xff0c;只能通过行内样式修改 样式如下&#xff1a; image.png image.png 修改方式&#xff1a; 1.官方文档中写…

go-zero(十七)结合DTM :实现分布式事务

1. 基础概念介绍 1.1 什么是分布式事务 在微服务架构中&#xff0c;一个业务操作常常需要调用多个服务来完成。例如&#xff0c;在电商系统中下单时&#xff0c;需要同时操作订单服务和库存服务。这种跨服务的操作就需要分布式事务来保证数据一致性。 分布式事务面临以下挑战…

2025 简易Scrum指南(简体中文版)

Scrum是一个轻量级的、以团队为中心的框架&#xff0c;用于解决复杂的问题并创造价值。Scrum有意保持非完整性&#xff0c;Scrum的设计初衷旨在依靠使用者的集体智慧来不断演进构建。 Scrum建立在实验主义和精益思想的基础上&#xff0c;它赋能团队灵活巧妙地工作&#xff0c;…

2025最新福昕PDF编辑器,PDF万能处理工具

软件介绍 Foxit PDF Editor Pro 2025 中文特别版&#xff08;以前称为 Foxit PhantomPDF Business&#xff09;是一款专为满足各种办公需求而设计的业务就绪的PDF工具包。 软件特点 1. 强大的PDF编辑能力 创建新文档&#xff1a;用户可以从无到有地构建PDF文档&#xff0c;添…

ollama的若干实践

1. 本地ollama 1.1 本地安装ollama 方法 1&#xff1a;手动检查最新版本并下载 访问 Ollama 的 GitHub Releases 页面&#xff1a; 打开 https://github.com/ollama/ollama/releases 查看最新的稳定版本&#xff08;如 v0.7.0 或更高&#xff09; 手动下载最新版本&#xff08…

Spring Security源码解析

秒懂SpringBoot之全网最易懂的Spring Security教程 SpringBoot整合Spring-Security 认证篇&#xff08;保姆级教程&#xff09; SpringBoot整合Spring Security【超详细教程】 spring security 超详细使用教程&#xff08;接入springboot、前后端分离&#xff09; Security 自…