OceanBase v4.2 解读:tenant=all 语义优化,提升易用性
1 背景
1.1 租户类型及特点
OceanBase中有三种类型的租户:
- sys租户:集群默认创建,生命周期与集群相一致,管理集群和其他租户,具有较高的地位。
- 用户租户:用户创建的业务租户或普通租户,用于运行用户业务并提供完整的数据库功能。
- meta租户:与用户租户对应的内部租户,用于存储和管理用户租户的集群私有数据。
可见,sys租户和meta租户都具有“角色关键,但不跑业务”的特点,因此,用户在运维中也往往不会刻意关注这些租户,而是将重点放在用户租户上。
1.2 tenant=all 的已知问题
目前,租户级配置项修改命令支持tenant=all语法,即alter system set xxx=yyy tenant=all,语义是对所有租户,包括sys、meta租户,都生效。这种设计存在两个问题。
一是易用性问题,即可能使用户做出不符合本身意愿的误操作。当用户使用tenant=all时,可能仅仅是想对所有用户租户生效,也没有清楚而深刻地认识到“我这个动作,已经顺带把sys租户和meta租户的配置项一起改了,这可能会有问题,我需要特别留心这一点”。
二是稳定性问题,即可能会引发observer故障。如果有些配置项对sys租户很重要,不可轻易修改,那么,一旦这些配置项被tenant=all“顺带”修改了,就可能引发ObServer的故障,并增加问题排查的难度。
以cpu_quota_concurrency为例说明,sys租户默认配置成10,其余租户默认值为4,如果用户执行了alter system set cpu_quota_concurrency=5 tenant=all;,可能导致sys租户出现问题。而用户很可能仅仅是想改跑业务的用户租户的配置项,sys、meta被连带修改,非用户本意。
1.3 解决方案
变更tenant=all的语义,彻底杜绝用户误操作的风险,同时新增语法兼容旧语义,详见下文变更细节。
2 tenant=all语义变更
2.1 变更细节
首先,修改tenant=all语义,改为“仅包括所有用户租户,排除sys和meta租户”,以彻底杜绝用户误操作风险,提升产品稳定性。
除了配置项修改语法,其它使用tenant=all的语法,如合并转储相关语法,也要一起修改,为了保持产品行为统一,避免用户疑惑。
其次,新增语法,tenant=all_user,tenant=all_meta,分别对应所有用户租户和所有meta租户。理由是兼容原有语义,提供更细粒度的控制,在保证操作安全的前提下尽量方便用户使用。如果用户想使操作对所有用户租户生效,可以使用tenant=all_user,而不必一一列举租户名称;如果用户确实想要使操作对所有租户都生效,可以依次使用tenant=all_user,tenant=all_meta,tenant=sys,详见使用说明。
修改后,tenant=all和tenant=all_user的语义完全相同,后面会在恰当时机废弃tenant=all。
2.2 影响到的模块和命令
| 模块 | 命令 |
| 配置项修改 | alter system set xxx=yyy tenant=all |
| 合并转储 | alter system {major|minor} freeze tenant=allalter system {suspend|resume} merge tenant=allalter system clear merge error tenant=all |
2.3 性能影响
无影响。本特性只是缩小了tenant=all的生效范围,同时新增了两个与tenant=all类似的命令,即(tanant=all_user和tenant=all_meta),且实现上没有新增开销大的操作,因此不会增加额外的运行负担,对数据库性能无影响。
3 使用说明及特性限制
- 仅支持在sys租户下使用
tenant=sys,tenant=all_user,tenant=all_meta。 - 对配置项修改语法和合并转储语法,均不建议再使用
tenant=all。 - 如果只想对sys租户生效,使用
tenant=sys;如果只想对所有的用户租户生效,使用tenant=all_user;如果只想对所有的meta租户生效,使用tenant=all_meta。 - 如果确实想对所有的租户生效,则需依次使用
tenant=sys,tenant=all_user,tenant=all_meta。 - 对于配置项设置语法,tenant后不支持list形式;对于合并转储语法,all_user和all_meta只能单独使用,其它名称可以组合成list形式使用。
- sys不能大写,因为sys是租户名,是区分大小写的。而all_user和all_meta是关键字,不区分大小写。
# 配置项设置示例
# 以下三句实现原有all语义
alter system set ob_compaction_schedule_interval = '10s' tenant = sys; # sys不能大写
alter system set ob_compaction_schedule_interval = '10s' tenant = all_user;
alter system set ob_compaction_schedule_interval = '10s' tenant = all_meta;# 以下示例不可以,tenant后只能是单个名称,不能是list
obclient> alter system set ob_compaction_schedule_interval = '10s' tenant = mysql,sys;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'sys' at line 1obclient> alter system set ob_compaction_schedule_interval = '10s' tenant = all_user,all_meta;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'all_meta' at line 1obclient> alter system set ob_compaction_schedule_interval = '10s' tenant = mysql,all_user;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'all_user' at line 1obclient> alter system set ob_compaction_schedule_interval = '10s' tenant = mysql,all_meta;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'all_meta' at line 1# 合并转储示例
# 以下三句实现原有all语义
alter system major freeze tenant = sys; # sys不能大写
alter system major freeze tenant = all_user;
alter system major freeze tenant = all_meta;# 以下示例不可以,all_user/all_meta只能单独使用
obclient> alter system major freeze tenant = all_user,all_meta;
ERROR 1235 (0A000): all/all_user/all_meta in combination with other names is not supportedobclient> alter system major freeze tenant = mysql,all_user;
ERROR 1235 (0A000): all/all_user/all_meta in combination with other names is not supportedobclient> alter system major freeze tenant = mysql,all_meta;
ERROR 1235 (0A000): all/all_user/all_meta in combination with other names is not supported# 以下示例是可以的,all_user/all_meta外的名称可以组合使用
alter system major freeze tenant = tt1,sys;
在使用该特性的过程中,存在一些限制。
第一,不能再创建名为all_user或者all_meta(不区分大小写)的租户,因为all_user和all_meta变成保留字了。
第二,低版本升级4.2.1版本前,需要先检查集群中是否有名为all_user或者all_meta(不区分大小写)的租户,如有,需要先重命名租户再升级。
第三,因为没有实际风险,故以下语法中tenant=all语义暂未变更,且暂无计划在未来版本做变更,会维持原有语义不变,且不支持tenant=all_user或tenant=all_meta。
# 升级相关命令,不显示指定TENANT,或指定TENANT = ALL,都会对所有租户生效,无风险
ALTER SYSTEM RUN UPGRADE JOB "CMD" [TENANT = ALL|tenant_list];
# 这里TENANT = ALL只包含用户租户,sys租户和meta租户没有对应功能
ALTER SYSTEM ARCHIVELOG|NOARCHIVELOG TENANT = ALL;相关文章:
OceanBase v4.2 解读:tenant=all 语义优化,提升易用性
1 背景 1.1 租户类型及特点 OceanBase中有三种类型的租户: sys租户:集群默认创建,生命周期与集群相一致,管理集群和其他租户,具有较高的地位。用户租户:用户创建的业务租户或普通租户,用于运…...
理论和实验
一、理论和实验的关系 (一)理论可以指导实验 理论家提出理论和猜想,实验家就可以做个实验来验证是否适用。 (二)实验可以提升理论认识 实验家通过做实验,观察实验过程和结果后,如果发现和理论预测有误差,那么理论家就能根据新发现…...
Linux 常用命令 - userdel 【删除用户】
简介 userdel 这个命令源自于 “user delete”,即用户删除。这个命令主要用于在 Linux 系统中删除用户账户及其相关文件。当管理员需要移除一个用户及其在系统中的所有踪迹时,会用到这个命令。 使用方式 userdel [选项] 用户名常用参数 -f:强制删除用户,即使用户当前已登…...
等保测评和安全运维
# 等保测评与安全运维:构建企业网络安全的双重保障 引言 在数字化时代,企业面临着日益复杂的网络安全威胁。为了应对这些挑战,企业不仅要实施有效的安全运维措施,还需要通过等保测评确保其信息系统符合国家的安全标准。本文将探讨…...
Java课程设计:基于Java+Swing+MySQL的图书管理系统(内附源码)
文章目录 一、项目介绍二、项目展示三、源码展示四、源码获取 一、项目介绍 图书管理系统是一个常见的软件项目,广泛应用于图书馆、学校、企业等需要管理图书资源的场景。该系统通常涵盖图书信息录入、查询、借阅、归还等核心功能,是实现图书资源高效管理的重要工具。 随着信…...
WireGuard网络架构及配置详解
WireGuard网络架构及配置详解 一.点对点二.中心网关,实现nat穿透弊端:流量全部经过中心网关,带宽上限受限于中心网关 三.借助registry实现双向nat穿透需要借助registry实现 udp打洞, 待二开 一.点对点 yum install epel-release elrepo-release -y yum install yum-plugin-elr…...
VB.NET实现上位机自动识别可用串口
在实际应用中有时会牵扯到挑选可用串口,比如上位机和从站设备使用Modbus RTU协议进行通讯时需要选择COM串口,每次启动连接前都在设备管理器查看较为麻烦,可以设置一个串口自动识别功能,如果选择了错误的串口还可以提示串口选择错误…...
Node.js版本管理工具-NVM
在开发 Node.js 项目时,经常会遇到需要切换不同版本的 Node.js 的情况。为了方便管理和切换各个版本,我们可以使用一些 Node.js 版本管理工具。 Node Version Manager:简称NVM,最流行的 Node.js 版本管理工具之一。它允许我们在同…...
【react】useEffect 快速上手
useEffect 快速上手 useEffect(setup, dependencies?) 可以接收两个参数,分别是回调函数与依赖数组. useEffect 用什么姿势来调用,本质上取决于你想用它来达成什么样的效果。下面我们来简单介绍 useEffect 的调用规则。 每一次渲染后都执行的副作用&a…...
docker容器部署jenkins
提前安装好jdk和maven,jdk最好使用11版本,jdk-11.0.10 docker run -u root -d \ -p 100:8080 \ -v /var/jenkins_home/workspace/:/var/jenkins_home/workspace/ \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker…...
第十四章 享元模式
目录 1 享元模式介绍 2 享元模式原理 3 享元模式实现 4 享元模式应用实例 5 享元模式总结 1 享元模式介绍 享元模式 (flyweight pattern) 的原始定义是:摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,从而让我…...
ThinkBook 16 2024 Ubuntu 触控板问题解决
sudo insmod goodix-gt7868q.ko sudo cp local-overrides.quirks /etc/libinput/local-overrides.quirks sudo systemctl restart gdm 有偿解决,无效退款...
qt qDebug兼容LOGE
目录 普通qDebug用法 qt qDebug兼容LOGE 模板参数2实现 qDebug 实现LOGE一样的用法,这样Android和qt同时支持LOGE打印日志 普通qDebug用法 #include <QApplication> #include <QDebug>int main(int argc, char *argv[]) {QApplication app(argc, argv);int ret…...
【Ardiuno】实验使用ESP32单片机连接Wifi(图文)
ESP32单片机最为精华和有特色的地方当然是wifi连接,这里我们就写程序实验一下适使用ESP32主板连接wifi,为了简化实验我们这里只做了连接部分,其他实验在后续再继续。 由于本实验只要在串口监视器中查看结果状态即可,因此电路板上…...
常用的五大数据可视化工具测评分享
随着数据驱动决策的时代到来,数据可视化工具成为了企业提升数据分析效率和决策质量的关键工具。本文将对帆软BI、奥威BI、思迈特BI、永洪BI以及亿信华辰BI这五大数据可视化工具进行详细的操作体验测评,总结它们的特点和优势。 一、帆软BI 帆软BI作为国…...
什么是校园抄表系统?
1.校园抄表系统的简述 校园抄表系统是当代高校管理中的一个重要组成部分,主要运用于全自动搜集、管理方法与分析校园里的电力能源使用数据,如水电煤等。它通过先进的方式方法,完成了对能源消耗的实时监控系统,提升了电力能源管理…...
计算机专业:未来何去何从?
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…...
python-windows10普通笔记本跑bert mrpc数据样例0.1.048
python-windows10普通笔记本跑bert mrpc数据样例0.1.000 背景参考章节获取数据下载bert模型下载bert代码windows10的cpu进行训练进行预测注意事项TODOLIST背景 看了介绍说可以在gpu或者tpu上去微调,当前没环境,所以先在windows10上跑一跑,看是否能顺利进行,目标就是训练的…...
4句话明白虚拟机和容器的区别
一、虚拟机VM的组成 服务器-HostOS-虚拟化层-GustOS-libs-App 1、此时存在几个问题: 1、资源消耗大 2、扩展APP副本时到重复资源浪费(GustOS-libs) 3、当你开发在本地但要移植到云端,就会出现各种兼容性问题。 4、很难集成到DevOp…...
Django render()函数页面渲染
1, render() 函数 在Django框架中,render() 函数是一个非常有用的快捷方式,用于从视图函数返回一个完整的HTTP响应。它负责将给定的模板与上下文数据结合,渲染出最终的HTML页面,并返回一个HttpResponse对象。 from d…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
