【OceanBase诊断调优】 —— DDL时报磁盘不足问题排查

1. 背景

由于在4.x的部分版本中,我们对于一些ddl操作还存在磁盘空间放大问题,本文主要介绍了这一类问题的排查。

2. 问题排查

2.1 整体排查链路

2.2 问题现象

DDL过程中报磁盘空间不足,需要确认是否符合预期,如果是符合预期,后续运维操作可能要加空间。

2.3 排查流程

我们需要估算DDL过程需要的大概空间,与磁盘剩余空间进行比较,看是否报磁盘不足时符合预期的。首先是估算DDL过程需要的大概空间,我们需要计算每台leader节点上机器上关于这张表的数据量,计算方式如下:

1.获取DDL报错表格的名字和租户的名字,可以作为输入参数

2.根据表格名字和租户名字,获取table_id,tenant_id

select tenant_id from __all_tenant where tenant_name = '租户名';
select table_id from __all_virtual_table where table_name = '表名' and tenant_id = '租户id';

1.根据表名获取ddl源表的空间大小

select svr_ip, svr_port, sum(original_size) as estimated_data_size from __all_virtual_tablet_sstable_macro_info where tablet_id in (select tablet_id from __all_virtual_tablet_to_table_history where table_id = xxx) and (svr_ip, svr_port) in (select svr_ip, svr_port from __all_virtual_ls_meta_table where role = 1) group by svr_ip, svr_port;

1.根据所做的ddl操作,确定最终的ddl表格操作的预估空间,如果是建索引需要给索引名,如果是其他offline ddl操作,那么直接用计算公式(observer_version >= 4.2.3 ? 1.5 *estimated_data_size : 5.5 *estimated_data_size)

1. 根据索引名,查询索引表的id
select table_id from __all_virtual_table_history where tenant_id = 'xxx' and data_table_id = 'xxx' and table_name like '%索引名%';
2. 查询主表所有列的长度之和
select table_id, sum(data_length) from __all_virtual_column_history where tenant_id = 'xxx' and table_id = '主表table_id';
3. 查询索引所有列的长度之和
select table_id, sum(data_length) from __all_virtual_column_history where tenant_id = 'xxx' and table_id = '索引表table_id';
4. 通过索引表的data_length / 主表data_length * estimated_data_size来估算最终空间,记作estimiated_index_size
5. 最终的磁盘空间大小为(observer_version >= 4.2.3 ? 1.5 *estimated_index_size : 5.5 *estimated_index_size)  #4.2.3及之后的版本的放大系数是1.5,之前的为5.5

每台机器上还剩余的可以给DDL流程的磁盘剩余空间

1.获取observer上可用于临时空间部分的磁盘比例,通过查询配置项data_disk_usage_limit_percentage

2.获取observer上总磁盘空间,以及使用的磁盘空间,记作total_size,used_size

获取data_disk_usage_limit_percentage配置: SHOW PARAMETERS LIKE 'data_disk_usage_limit_percentage';获取各个节点的资源:select total_size, used_size from __all_virtual_disk_stat where svr_ip = 'xxx' and svr_port = xxx;

1.observer剩余可用的磁盘空间为total_size * data_disk_usage_limit_percentage - used_size

根据每台observer上的预期需要使用的空间 - 每台observer剩余给DDL使用的空间 是否大于0来判断是否磁盘空间不足。

3. 如何借助obdiag来快速分析DDL时报磁盘不足的问题

3.1 使用示例

目前obdiag支持了增加索引时报磁盘不足问题的场景,目前支持4.2.1.0及之后的版本

obdiag rca run --scene=ddl_disk_full --input_parameters='{"tenant_name":"test1","table_name":"t555","action_type":"add_index","index_name":"k1"}'

input_patameters是一个用于输入不同根因分析场景下需要引入的变量赋值,输入对象的应该为一个json格式的字符串用于解析。

tenant_name:租户名
table_name:表名
action_type:操作类型  注:2.2.0版本开始支持加索引的类型
index_name:索引名

示例:如下为一次调用的结果record的展示

将每一个步骤进行了输出,并且判断了所需的空间大小和当前的大小,最后得出结果,空间足够添加索引。

3.2后续场景升级

在ddl操作中除了添加索引外,还有其他可能的操作会导致报错空间不足,我们会支持进行功能的更新和扩展。

有兴趣的DBA和开发者可以加入obdiag SIG进行共建开发。

3.3 附录

•obdiag 下载地址: OceanBase分布式数据库-海量数据 笔笔算数

•obdiag 官方文档: OceanBase分布式数据库-海量数据 笔笔算数

•obdiag github地址: https://github.com/oceanbase/oceanbase-diagnostic-tool

•obdiag SIG 营地: 诊断工具 · OceanBase 技术交流

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

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

相关文章

客厅3d模型素材下载哪家好?

客厅是家庭生活中最重要的空间之一,承载着家人的欢聚、交流和休息。而客厅3D模型让家居设计师更好的完成设计布局和设计规划,为用户呈现出一个更加真实的家居空间。那么客厅3d模型素材下载哪家好? 1、建e网的3D模型库不仅数量庞大,而且质量上…

高考后志愿填报信息采集系统制作指南

在高考的硝烟散去之后,每位学生都面临着一个重要的任务——志愿填报。老师们如何高效、准确地收集和整理这些信息,成为了一个棘手的问题。难道我们只能依赖传统的手工登记方式,忍受其繁琐和易错吗? 易查分是一个简单易用的在线工具…

Kaggle -- Multi-Class Prediction of Obesity Risk

使用简单的决策树进行分类,代码如下: import pandas as pd import numpy as np from sklearn.preprocessing import OneHotEncoder from sklearn.model_selection import train_test_splitdf pd.read_csv("train.csv")df[Gender] df[Gender…

Word同行内的文字如何左右分别对齐

先打开标尺(视图-标尺) 开右边,选一个制表位置,比如我选34 切回开始,点段落段落右下角 然后 然后 我修改为35(因为“6月13日”总共3个字符) 在文字中间按下Tab键,效果如下

流程设计的基本步骤

背景 公司为什么要流程,已经有专门章节进行阐述; 什么是流程,已经有专门章节进行专门阐述; 那么接下来这个章节讨论,流程设计的基本步骤,那么谁来设计流程呢,让一个部门的员工来设计一份流程…

【嵌入式DIY实例】-Nokia 5110显示DHT11/DHT22传感器数据

Nokia 5110显示DHT11/DHT22传感器数据 文章目录 Nokia 5110显示DHT11/DHT22传感器数据1、硬件准备2、代码实现2.1 显示DHT11数据2.2 显示DHT22数据本文介绍如何将 ESP8266 NodeMCU 开发板 (ESP-12E) 与 DHT11 数字湿度和温度传感器以及诺基亚 5110 LCD 连接。 NodeMCU 从 DHT11…

某国资集团数据治理落地,点燃高质量发展“数字引擎”

​某国有资产经营控股集团为快速提升集团的内控管理能力和业务经营能力,以数字化促进企业转型的信息化建设势在必行。集团携手亿信华辰开启数据治理项目,在数据方面成功解决“哪里来、怎么盘、怎么管、怎么用”的问题,不断推动企业数字化转型…

Kali Linux 2022.2 发布,包含 10 个新工具和WSL 改进

Offensive Security发布了Kali Linux 2022.2,这是2022年的第二个版本,具有桌面增强功能,有趣的愚人节屏幕保护程序,WSL GUI改进,终端调整,最重要的是,新的工具! Kali Linux是一个Li…

element 树组件 tree 横向纵向滚动条

Html <el-cardshadow"hover"class"solo flex-2"style"height: calc(100vh - 1.6rem); border: 1px solid #ebeef5"><div slot"header" class"clearfix"><span>问题分类</span></div><div …

uniapp地图导航

我们只需要给图标加一个点击事件 我这里的数据都是动态的&#xff0c;想测试的朋友可以写固定值 然后跳转之后首先会调到选择软件导航 点击导航之后会显示使用哪个app 最后我们选择之后将会直接跳转到app进行导航

LMDeploy 量化部署

LMDeploy简介 LMDeploy是一个由MMDeploy和MMRazor团队联合开发的工具包&#xff0c;旨在为大型语言模型&#xff08;LLM&#xff09;提供全套的轻量化、部署和服务解决方案。以下是对LMDeploy的简介&#xff0c;采用分点表示和归纳的方式&#xff1a; 核心功能&#xff1a; 高…

Stable Diffusion: ControlNet 插件安装

前面介绍了一些通过代码实现ControlNet进行控制的案例。现在通过Stable Diffusion体验一下更便捷的操作。 Stable Diffusion插件安装办法大致相同。启动Stable Diffusion后&#xff0c;点击最右边的“扩展”&#xff0c;点击“可下载”&#xff0c;点击“加载扩展列表”。 视网…

正大国际期货:小小的钱如何在期货市场翻身?

小小的钱 &#xff0c;莫名喜感→在小小的花园里面哇呀哇呀挖 有可能性&#xff0c;因为有杠杆所以收益大&#xff0c;同时风险亏损起来也快&#xff0c;&#xff0c;所以必须用小亏损换大收益&#xff0c;&#xff0c;比如跌过这个位置就止损退出&#xff08;永远在低点附近买…

【递归、搜索与回溯】综合练习一

综合练习一 1.找出所有子集的异或总和再求和2.全排列 II3.电话号码的字母组合4.括号生成 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.找…

【stable diffusion】ComfyUI扩展安装以及”127.0.0.1拒绝了我们的连接请求“解决记录

扩展安装 虽然大家都推荐将扩展包直接放到extension文件夹的方式&#xff0c;但我还是推荐直接在sd webui的扩展处下载&#xff0c;酱紫比较好维护一点&#xff0c;我个人感觉。 按照上图顺序点击会出现”URLError: <urlopen error [Errno 11004] getaddrinfo failed>”…

2024 Java 异常—面试常见问题

目录 一、异常的分类 二、throw和throws都是异常处理的关键字&#xff0c;二者区别。 三、try-catch-finally 中&#xff0c;如果 catch 中 return 了&#xff0c;finally 还会执行吗&#xff1f; 四、try-catch-finally 中哪个部分可以省略&#xff1f; 五、常见的 Runti…

BarTender软件下载附加详细安装教程

BarTender是美国海鸥科技推出的一款优秀的条码打印软件&#xff0c;应用于 WINDOWS95 、 98 、 NT 、 XP 、 2000 、 2003 和 3.1 版本&#xff0c; 产品支持广泛的条形码码制和条形码打印机&#xff0c; 不但支持条形码打印机而且支持激光打印机&#xff0c;还为世界知名品牌条…

C脚本实现用键盘按键控制Wincc某按钮动作

文章目录 前言一、创建Wincc画面并添加变量及按钮二、在“事件”-“键盘”下&#xff0c;编写“按下”和“释放”的C脚本 前言 在某些特定场景下&#xff0c;需要通过电脑键盘控制上位机界面上按钮按下或释放&#xff0c;本文给出了基于C脚本的解决方案。 一、创建Wincc画面并…

Tailwind CSS 响应式设计实战指南

title: Tailwind CSS 响应式设计实战指南 date: 2024/6/13 updated: 2024/6/13 author: cmdragon excerpt: 这篇文章介绍了如何运用Tailwind CSS框架创建响应式网页设计&#xff0c;涵盖博客、电商网站及企业官网的布局实例&#xff0c;包括头部导航、内容区域、侧边栏、页脚…

从零开始手把手Vue3+TypeScript+ElementPlus管理后台项目实战十一(整体布局04之Header及用户注销)

新增Hearder 新增 src/layout/components/PageHeader.vue <template><div class"header-cont"><div><h1><router-link to"/">RealWorld</router-link></h1></div><div><template v-if"is…