【OceanBase诊断调优】—— clog盘满问题排查

news2024/9/20 10:47:06

背景

日志盘,即clog盘,是oceanbase中用于记录事务日志信息。在日常运行中其存储量会随着事务处理情况不断变化。在一些特殊场景下会出现clog盘占用量超过阈值的情况。4.x架构下的clog盘,日志盘进行了租户级拆分,意味着无法再以3.x的视角判断clog是否盘满,例如通过df -h 命令查看clog盘是否使用超过80%,而是需要通过查看租户的日志盘使用判断租户的日志盘是否满。ocp,obdiag等工具均已集成了对clog盘的巡检监控,但是对于clog盘满的根因分析还是需要很多较为复杂的流程。ocp:ocp告警示例

image.png

obdiag:执行obdiag check即可,observer的巡检报告中clog.clog_disk_full会对此进行检测

本文将从obdiag根因分析clog盘满场景的流程来对分析流程进行盘查流程说明。

obdiag中关于clog盘满场景的排查流程实现

排查大纲

判断日志盘是否到达阈值

不同的租户有不同的clog盘阈值,clog盘阈值依据以下公式进行计算,当对应租户的LOG_DISK_IN_USE>clog盘阈值时即认定此租户在对应节点的clog盘满,需要进行根因分析。

clog盘阈值=log_disk_utilization_threshold*LOG_DISK_SIZE

确定租户下哪些/哪个日志流日志盘使用存在异常

当找到某个租户在某个节点上存在clog盘满后,则继续分析对应的日志流是哪个。可通过以下sql获取对应日志流,获取到的数据即可以定位对应的日志流、租户、节点信息,接下来即进行对具体问题的分析。

select * from oceanbase.__all_virtual_log_stat where tenant_id = {0} and end_lsn-base_lsn >128*1024*1024 and svr_ip='{1}' and svr_port={2} ;

确认checkpoint类型

  1. 查找日志clog checkpoint no change,分析对应的service_type记为stuck_service_type并记录后续步骤存在依赖
  2. 查找日志:ObLSTxService::get_rec_scn,找到min_checkpoint_tx_log_type并筛选出来

明确日志回放/回调是否有问题

  1. 若stuck_service_type不为TRANS_SERVICE或MAX_DECIDED_SCN则直接跳过
  2. 查找日志:get_min_unreplayed_log_info,获取replay_scn,并将其转化为时间戳
replay_scn_time = datetime.datetime.fromtimestamp(float(replay_scn) / 1000000000)

3. 获取日志时间戳,并与replay_scn_time进行对比,若超过0.5minutes,则说明回放存在问题。

明确冻结是否有问题

  1. 若stuck_service_type不为TRANS_SERVICE则直接跳过。
  2. 查找日志[TenantFreezer] oldest frozen memtable,找到日志行中存在的log_frozen_memstore_info 和[TenantFreezer] oldest frozen memtable字段,分析出对应的ready_for_flush_time和frozen_time并转为时间戳。
ready_flush_time = datetime.datetime.fromtimestamp(float(ready_for_flush_time_list[i]) / 1000000000)
frozen_time = datetime.datetime.fromtimestamp(float(frozen_time_list[i]) / 1000000000)

3. 对比两者大小,若stuck_time > stuck_delta则代表冻结存在问。

明确转储是否有问题

  1. 查找日志:Too many sstables in tablet, cannot schdule mini compaction, retry later,若存在对应日志则代码转储存在问题

后续定位问题处理

目前clog盘满场景仅定位到对应的模块出现了问题,但是具体的后续应急运维操作并未给出。目前的后续处理方案是 将clog解析结果反馈至社区或对应的商业版运维,可以大幅度减少前期定位模块时中间对接的过程。

后续场景升级

clog盘满场景较为复杂,后续会继续补充相关的流程优化等信息。在下级问题的排查(回放、冻结、转储)暂时未开发对应的rca根因分析脚本,需要继续进展。有兴趣对此进行开发的同学可以联系obdiag的SIG,同时若存在易用性类的问题也可以反馈给我们。

技术支持

排查思路及流程感谢 岩元(崔晓飞) 提供。

测试场景及案例感谢 靖永栋(中国联通软件研究院) 提供。

附录

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

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

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

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

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

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

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

相关文章

Redis缓存数据库进阶——Redis缓存数据同步问题(8)

Redis缓存使用问题 数据一致性 只要使用到缓存,无论是本地内存做缓存还是使用 redis 做缓存,那么就会存在数据同步的问题。 我以 Tomcat 向 MySQL 中写入和删改数据为例,来给你解释一下,数据的增删改操作具体是如何进行的。 我…

Java中的集合相关知识汇总

总结 Java集合 从数据结构可以分为:数组、Set、Map、队列、栈;从多线程安全可以分为线程安全与非线程安全的集合从关联关系可以总结如下(不包含多线程安全类): 点线框表示接口; 折线框表示抽象类; 实线框表示实现类…

动态代理IP VS 静态代理IP,分别适合什么业务场景?

随着全球化进程的加深,使用IP代理服务的用户与日俱增。本文以“动态IP代理与静态IP代理”为探讨话题,对它们之间的区别、特点与应用场景作深度的对比分析。 一、含义上的区别 动态IP代理:互联网服务提供商(ISP)向用户…

Pytorch中reshape,view,transpose以及permute的详细原理及应用

在深度学习中,我们经常会遇到需要对张量进行形状变换的情况。PyTorch 提供了多种方法来改变张量的形状,包括 reshape, view, transpose和permute 。本文总结了其它博客的精华,详细介绍这些方法的原理和应用场景。 目录 一、张量的存储方式 …

使用 Elasticsearch 和 LlamaIndex 保护 RAG 中的敏感信息和 PII 信息

作者:来自 Elastic Srikanth Manvi 在这篇文章中,我们将研究在 RAG(检索增强生成)流程中使用公共 LLMs 时保护个人身份信息 (personal identifiable information - PII) 和敏感数据的方法。我们将探索使用开源库和正则表达式屏蔽 …

探索 Redis 不同集群架构的性能与应用

1. 引言 Redis的集群配置成为了提高数据可靠性和服务可用性的关键。本文将带领大家了解Redis的四种主要集群架构,并重点分析哨兵模式和Redis Cluster架构和优势。 2. Redis的四种集群架构 2.1 单实例Redis 使用单个 Redis 实例提供服务。适用于小规模应用&#…

C语言 #具有展开功能的排雷游戏

文章目录 前言 一、整个排雷游戏的思维梳理 二、整体代码分布布局 三、游戏主体逻辑实现--test.c 四、整个游戏头文件的引用以及函数的声明-- game.h 五、游戏功能的具体实现 -- game.c 六、老六版本 总结 前言 路漫漫其修远兮,吾将上下而求索。 一、整个排…

WEB前端开发中如何实现大文件上传?

大文件上传是个非常普遍的场景,在面试中也会经常被问到,大文件上传的实现思路和流程。在日常开发中,无论是云存储、视频分享平台还是企业级应用,大文件上传都是用户与服务器之间交互的重要环节。随着现代网络应用的日益复杂化&…

实况照片怎么转换成gif动图?分享5种方法!

在当今这个视觉为王的时代,静态的照片已经难以满足我们追求生动、有趣的表达需求。你是否也曾想过,将那些精彩瞬间的实况照片转换成动感十足的GIF动图,为社交分享增添一抹亮色?今天,就让我们一起来探索实况照片转换成G…

自闭症怎么才能摘帽?

作为星贝育园自闭症康复中心的老师,经常会有家长满怀期待又焦虑地问我:“自闭症怎么才能摘帽?”今天,我就来为大家详细说一说。 首先,我们要明确,自闭症的“摘帽”并非一蹴而就,而是一个…

U盘目录损坏:诊断、恢复与防范全解析

U盘目录损坏:数据安全的隐形挑战 在数字化生活日益普及的今天,U盘作为便携式数据存储设备,几乎成为了每个人工作、学习和生活中不可或缺的一部分。然而,U盘目录损坏问题却时常发生,给数据安全和用户体验带来了巨大挑战…

Python数值计算(10)

继续说多项式的数值及拟合,这次主要讨论关于多项式拟合的函数fit。定义如下: classmethod polynomial.polynomial.Polynomial.fit (x, y, deg, domainNone, rcondNone, fullFalse, wNone, windowNone, symbolx) Polynomial类下面有一个函数fit&#xf…

弄懂这5条深层逻辑,你也将通透豁达

01 如果正面解决不了问题,不妨试试从侧面或者反面进行解决。 比如,食堂的锅破了一个洞,如果你多次反映都没能解决破洞的问题,那不妨直接把锅捅穿,让锅没有办法使用,进而升级问题,把做饭不方便…

深入源码:解析SpotBugs (3) Detector

文章目录 OpcodeStackDetector常用套路调用栈visit code类检测方法检测代码行检测 前面的博客也提到过,Spotbugs 里面 Detector2 与 Detector,FindBugs2 与 FindBugs,GUI2与GUI,可以视为 Spotbugs 与 FindBugs 新老技术的碰撞&…

基于微信小程序+SpringBoot+Vue的网络安全科普系统(带1w+文档)

基于微信小程序SpringBootVue的网络安全科普系统(带1w文档) 基于微信小程序SpringBootVue的网络安全科普系统(带1w文档) 优质的网络安全科普系统不仅可以单纯的满足工作人员管理的日常工作需求,还可以满足用户的需求。可以降低工作人员的工作压力,提高效…

课程制作及教学体验革命,AI视频生成工具如何落地教育行业?

“大力发展数字教育”,这是2024年政府工作报告中提到的教育任务之一。同时,“人工智能”行动首次写入政府工作报告,意味着各行各业均有新的发展空间。那么,数字教育应该怎么做?此前,2024年全国教育工作会议…

MySQL查询执行(三):显示随机消息

假设有如下表结构&#xff1a; -- 创建表words CREATE TABLE words (id int(11) NOT NULL AUTO_INCREMENT,word varchar(64) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB;--数据生成存储过程 delimiter ;; create procedure idata() begindeclare i int;set i0;while i<…

计算机毕业设计选题推荐-财会信息管理系统-Java项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

算法通关:011:分隔链表

文章目录 题目思路代码 leetcode 86 题目 思路 左边一个往进插数字 &#xff0c;右边一个往进插数字 &#xff0c;整个队列都完了以后让左边的尾指针指向右边的头指针&#xff0c;将两个链表连起来再返回即可。代码 /*** Definition for singly-linked list.* public class L…

STM32_RTOS学习笔记——1(列表与列表项)

总体RTOS笔记目录 一&#xff0c;列表与列表项&#xff08;本文&#xff09; 二&#xff0c;待定 视频参考&#xff1a;B站野火 一&#xff0c;C语言列表概念 列表就是C语言中的链表&#xff0c;链表就如同下面的衣架一样&#xff0c;需要的各种内容可以参考 C语言链表可…