【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 技术交流

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

告别数据孤岛,Xinstall助力App广告投放实现全渠道归因!

在移动互联网时代,App的推广和运营已成为企业不可或缺的一部分。然而,面对五花八门的广告渠道和繁杂多样的投放方式,如何有效追踪广告和渠道效果,如何甄别和选择流量渠道,成为了众多App开发商和运营者头疼的问题。幸运…

Qt制作程序启动界面类QSplashScreen实例测试详解

目录 一、QSplashScreen的概述 二、QSplashScreen静态图片加载 1、主程序实现 2、mainwindow.h实现 3、mainwindows.cpp实现 三、QSplashScreen动态图片加载 1、主程序实现 2、mainwindow.h实现 3、mainwindows.cpp实现 一、QSplashScreen的概述 QSplashScreen&#x…

LabVIEW电磁超声热态金属在线缺陷检测系统

LabVIEW软件开发的电磁超声热态金属在线缺陷检测系统针对极端高温环境下的金属材料,进行实时、无损的缺陷检测,具有高精度和高可靠性,能够显著提高材料质量控制的效率和准确性。 项目背景 随着工业技术的发展,高温环境下的金属材…

SQL Server入门-SSMS简单使用(2008R2版)-1

环境: win10,SQL Server 2008 R2 参考: SQL Server 新建数据库 - 菜鸟教程 https://www.cainiaoya.com/sqlserver/sql-server-create-db.html 第 2 课:编写 Transact-SQL | Microsoft Learn https://learn.microsoft.com/zh-cn/…

day01-anaconda的安装

Anaconda的安装 参考地址: http://t.csdnimg.cn/mUmSp 安装完毕,可以卸载电脑中的其他python版本,在控制面板中进行卸载。 在命令行指令中输入 pythonPython 3.8.3 (default, Jul 2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)] :: An…

DSP应用市场的大蛋糕,国产厂商能吃下多少?

DSP是数字信号处理器(Digital Signal Processor)的简称,是一种专门用于高速数学运算的微处理器。DSP能够快速且准确地处理数字信号,同时具备可编程和低功耗等特点,如今在各个领域发挥着越来越重要的作用。 &#xff08…

【Spine学习11】之 战士攻击动作 思路总结(手动调整贝塞尔曲线实现前快后慢)

拿到一份psd文件先观察检查一下图片顺序有没有问题, 重点看一下人物的腿部分层,(如果是大小腿分开画的就网格可打可不打,如果是连在一起画的,那必须打网格) 拿着剑的时候剑和手的层级有没有错位&#xff0c…

六、在Qt下通过PCL在VTK9.3.0下显示自己的pcd点云文件

前几天刚整理好VTK8.2.0,发现我们的项目使用的PCL自带的VTK是9.3.0的,脸黑了快 VTK8.2.0可参考该篇博文:五、在Qt下加载QVTKWidget控件(VTK8.2.0),生成Visual Studio项目,显示点云(C…

02 Shell 编程之条件语句

目录 2.1 条件测试语句 2.1.1 文件测试 2.1.2 整数值比较 2.1.3 字符串比较 2.1.4 逻辑测试 2.2 if 条件语句 2.2.1 if 语句的结构 1. 单分支if 语句 2. 双分支if 语句 3. 多分支if 语句 2.2.2 if 语句应用示例 1. 单分支if 语句应用 2. 双分支if 语句应用 3. 多分支if 语句应…

chrome浏览器 network 显示感叹号(chrome network thinttling is enabled)

chrome浏览器上network出现一个黄色感叹号,鼠标移上去提示chrome network thinttling is enabled,这是因为开启了节流模式,直接把网络模式改为no throttling(有的浏览器为online)就可以了。 ##Tips: 1、n…

《图数据库:理论与实践》书籍销售火爆,二次印刷重磅来袭!

好书共享,就在此刻! 由创邻科技联合电子工业出版社匠心打磨三年,最终成稿的图数据库书籍《图数据库:理论与实践》发行上线后,获得了广泛好评,各平台销量迅速破千,并荣登京东 “数据库图书榜”热…

【Solr 学习笔记】Solr 源码启动教程

Solr 源码启动教程 本教程记录了如何通过 IDEA 启动并调试 Solr 源码,从 Solr9 开始 Solr 项目已由 ant 方式改成了 gradle 构建方式,本教程将以 Solr 9 为例进行演示,IDE 选择使用 IntelliJ IDEA。 Solr github 地址:https://gi…

牛拜克拉丝的wordpress免费企业模板

wordpress免费企业模板 挺简洁实用的wordpress免费企业模板,黄色模板搭建公司网站。 演示 https://www.wpniu.com/themes/40.html

信创CPU秘史(上):大厂销售的路子有多野?

最近接到一份金融行业粉丝的投稿,内容之奇令人咋舌,尽是些闻所未闻的新知识。无论是内容本身,还是获取内容的渠道,都非常有意思。今年我们把舞台交给老金,一起来听听信创大厂间的那些小秘密。 大家好,我叫老…

React是怎么进行事件处理的

什么是事件? 事件是指一些可以通过脚本响应的页面动作。当用户按下鼠标或者提交一个表单等等时候,事件都会出现。事件处理是一段JavaScript代码,总是与页面中的特定部分以及一定的事件相关联。当与页面特定部分相关联的事件发生时&#xff0c…

文本三剑客其二

文本三剑客其二 sed和awk grep就是查找文本当中的内容,扩展正则表达式。 sed 对文本内容进行增删改查 sed是一种流编辑器,一次处理一行内容。 如果只是展示,会放在缓冲区(模式空间),展示结束之后&…

vue3自动导入---组件库elements-ui,vuetify以及scss样式的自动导入

自动导入 我们在使用第三方组件库和css样式文件时,都需要进行引入,可以在单个组件内单独引用,也可以在全局引入或一次引入所有组件;但是,一般情况下我们都不会全部引入,这会是打包的结果变大,而…

idea插件开发之如何获取用户输入的变量名(类变量,局部变量等)

写在前面 比如我们要开发一个变量名称补全功能的插件,此时就需要在用户输入时获取当前的最新输入内容,本文就来看下如何来做。 1:开发 首先我们需要创建一个CompletionContributor的子类,还需要一个CompletionProvider的子类来…

【权威发布】2024年环境科学、旅游与产业经济国际会议(ICESTIE 2024)

2024年环境科学、旅游与产业经济国际会议 2024 International Conference on Environmental Science, Tourism and Industrial Economics 会议简介 2024年环境科学、旅游与产业经济国际会议旨在汇聚全球该领域的专家学者,共同探讨环境科学与旅游产业的融合发展&…

ArcGIS图斑分区(组)排序—从上到下从左到右

​​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 ArcGIS图斑分区(组)从上到下从左到右排序 是之前的内容的升级 GIS技巧100例——12ArcGIS图斑空间排序 关于今天的内容 我们在19年已经和大家分…