【OceanBase诊断调优 】—— 建索引执行报错问题排查

背景

建索引可能因各种各样的原因产生报错,本文主要介绍碰到建索引报错时,如何定位到建索引报错的日志,方便后续进一步使用工具一键收集日志/根因分析,分析根本原因。

备注:此文档中涉及的语句适用于版本号>=4.2.3和 >= 4.3的。

问题排查

建索引主要分为几个阶段

  1. 发送RPC给RS执行建索引的第一步schema变更,并生成调度任务
  2. RS按照状态机执行调度任务,具体分为如下步骤
    1. 等事务结束
    2. 数据补全
    3. 校验checksum
    4. 索引表生效
    5. 失败/成功清理
  1. 建索引的工作线程刷新到RS执行任务完成,返回结果

建索引报错的日志分析的基本思路是根据建索引的基本步骤,判断建索引失败在哪一步,然后决策收集哪些机器的日志,排查的基本步骤如下

  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. 根据索引名,查询到索引表ID
1. 根据索引名,查询索引表的id
select table_id from __all_virtual_table_history where tenant_id = 'xxx' and data_table_id = 'xxx' and table_name like '%索引名%';
  1. 根据索引表ID,查询__all_virtual_ddl_error_message表格中是否有记录(select task_id from __all_virtual_ddl_error_message where tenant_id = 'xxxx' and object_id = 'xxxx'),如果无记录,那说明失败在发送RPC,打印出信息,提示此时需要人工接入排查(这里后续梳理出需要添加的信息方便排查问题),否则进入步骤5
  2. 根据__all_virtual_ddl_error_message中查询到的task_id字段,查询__all_rootservice_event_history表(select event, trace_id,value6,rs_svr_ip, rs_svr_port from __all_rootservice_event_history where tenant_id = xxxx and value4 = 'task_id' and value2 != 0 and event != 'switch_state' and event not like 'index build task process fail' order by gmt_create desc limit 1;),根据失败所在的步骤,决策收集的信息,如果event字段的值为是ddl wait trans end ctx try_wait,那么进入步骤6,如果是 index sstable build task finish,那么进入步骤7,如果是其他的步骤,那么进入步骤8
  3. 如果是在等事务结束阶段失败,也就是event的名字为ddl wait trans end ctx try_wait,那么根据trace_id,去捞主表所有的tablet所在leader节点的日志
  4. 如果是在补数据阶段失败,那么根据value6字段解析出补数据失败的observer地址,根据observer地址以及trace_id,捞取observer对应的日志
  5. 如果是其他阶段失败,那么根据trace_id,以及rs_svr_ip和rs_svr_port来捞取执行时主RS的日志

OceanBase敏捷诊断工具相关链接:

github仓库GitHub - oceanbase/oceanbase-diagnostic-tool: OceanBase Diagnostic Tool is designed to help OceanBase users quickly gather necessary information and analyze the cause of the problem.
rpm包下载OceanBase分布式数据库-海量数据 笔笔算数
文档链接OceanBase分布式数据库-海量数据 笔笔算数

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

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

相关文章

【SAP HANA 15】SQL锁表 (查询,解锁)

锁表查看 --锁表检查语句 SELECT C.CONNECTION_ID,PS.STATEMENT_STRINGFROM M_CONNECTIONS C JOIN M_PREPARED_STATEMENTS PSON C.CONNECTION_ID PS.CONNECTION_ID AND C.CURRENT_STATEMENT_ID PS.STATEMENT_IDWHERE C.CONNECTION_STATUS RUNNINGAND C.CONNECTION_TYPE Re…

第二届数据安全大赛暨首届“数信杯”数据安全大赛数据安全积分争夺赛-东区预赛部分WP

这里写目录标题 检材下载:1.理论题2.数据安全:pb:Sepack: 3.数据分析:数据分析(1)数据分析1-1:数据分析1-2:数据分析1-3: 数据分析(3)数据分析3-1:数据分析3-2&#xff1…

2024年04月18日优雅草便民tools开源-git以及dcloud同步-长期更新

优雅草小工具-数据来自优雅草api赋能 优雅草小工具-数据来自优雅草api赋能-优雅草便民工具是一款由成都市一颗优雅草科技有限公司打造的便民查询公益工具,2024年1月17日正式发布v1.0.0版本,本工具为了方便大众免费使用,本生活小工具会陆续加入…

Oracle——领先的企业级数据库解决方案

一、WHAT IS ORACLWE: ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S 体系结构的数据库之一,ORACLE 通常应用于大型系统的数…

C#基于SSE传递消息给Vue前端实现即时单向通讯

一、简述 通常前端调用后端的API,调用到了,等待执行完,拿到返回的数据,进行渲染,流程就完事了。如果想要即时怎么办?如果你想问什么场景非要即时通讯,那可就很多了,比如在线聊天、实…

gpt能生成ppt吗

gpt能生成ppt吗 GPT是一个高度通用的工具,适用于多种场景和领域,制作ppt只是它强大功能的冰山一角,具体包括: 信息查询与解释: 提供科学、技术、历史、文化等领域的详细解释和背景信息。 解答疑问,帮助…

前端css中transition的使用

前端css中transition的使用 一、前言二、transition的4个属性三、例子1.源码12.源码1运行效果 四、结语五、定位日期 一、前言 CSS中的transition(过渡),根据字面意思就可以理解成一种变化状态的过程。当我们有一个方形,我们想让…

Java在MySQL数据报错Data truncation: Data too long for column ‘**‘ at row 1 处理

问题 在Java SpringBoot MyBatis 框架的项目中,一切正常,不过在一个接口的参数字段传入过大的数据就会报此错误: 请求常:org.springframework.dao.DataIntegrityViolationException: Error updating database.Cause:com.mysql.cj.jdbc.excep…

漫画项目管理 | 遇到强势甲方的不合理项目需求,我该怎么办?

🤷‍♂️ 遇到甲方强烈要求不合理需求怎么办? 🤸‍♂️看似离谱的功能客户却一定要加? 🤹‍♂️时间紧任务重,甲方却“什么都想要“? 🤾‍♂️明明初稿很完美,却被要求改来改去?** 👨‍…

学习STM32第十六天

RTC实时时钟 一、简介 RTC是一个独立的BCD格式定时器,提供一个时钟日历,两个可编程报警中断,一个具有中断功能周期性可编程唤醒标志,RTC和时钟配置系统处于后备区域。 通过两个32位寄存器以BCD格式实现秒、分钟、小时&#xff08…

Qt日志使用

QsLog使用 这篇讲qt的日志还是比较好的,可以在自己的函数里面配置这个日志框架实现自己所需的功能。 我接触的项目里面,假如有个函数功能执行错误了,我希望可以快速定位到这个错误,这个时候就需要到了日志,我咨询了有经…

使用Python脚本检测服务器信息并定时发送至管理员邮箱

在日常的系统管理工作中,监测服务器的资源占用情况至关重要,我们需要及时获得通知以便采取相应措施。我新装了一台UbuntuServer服务器,写了一个可以定期收集服务器的CPU、内存、网络和磁盘信息,并通过邮件将这些信息发送给管理员的…

Seal^_^【送书活动第一期】——《Vue.js+Node.js全栈开发实战(第2版)》

Seal^_^【送书活动第一期】——《Vue.jsNode.js全栈开发实战(第2版)》 一、参与方式二、本期推荐图书2.1 前 言2.2 作者简介2.3 图书简介2.4 本书特色2.5 编辑推荐2.6 书籍目录 三、正版购买 一、参与方式 1、关注博主的账号。 2、点赞、收藏、评论博主的…

C++练级之路——类和对象(下)

目录 1、构造函数初始化列表 2、类型转换 3、explicit关键字 4、static成员 5、友元 友元函数 友元类 6、内部类 7、匿名对象 8、拷贝构造时的一些编译器优化 差不多结束了,类和对象! 1、构造函数初始化列表 初始化列表:以一个冒号…

了解MySQL的复制

了解MySQL的复制 MySQL的复制允许数据从一个MySQL数据库服务器(主服务器)复制到一个或多个MySQL数据库服务器(从服务器)。复制在数据库的扩展性和数据备份方面扮演着重要角色,特别是在大型企业和高可用性的应用场景中…

时序预测 | Transformer时间序列预测 Matlab代码

文章目录 效果一览文章概述源码设计参考资料 效果一览 文章概述 1.时序预测 | Transformer时间序列预测 Matlab代码 2.单变量时间序列预测; 3.多指标评价,评价指标包括:R2、MAE、MBE等,代码质量极高; 4.excel数据&…

Git使用总结(不断更新中)

branch 本地分支操作 删除本地分支 git branch -d <local-branch-name>远端分支操作 从远端分支创建本地分支 git checkout -b <local-branch-name> origin/<remote-branch-name>git ignore 如果工程的代码文件中有不希望上传到远端的文件&#xff0c;…

Java数据类型以及范围

数据类型&#xff1a; 取值范围&#xff1a; 取值&#xff1a;

将 Notepad++ 添加到右键菜单

目录 方式一&#xff1a;添加注册表&#xff08;手动&#xff09; 方式二&#xff1a;添加注册表&#xff08;一键添加&#xff09; 有时安装了notepad后&#xff0c;在txt文件上右键&#xff0c;在弹出的菜单栏中没有【通过 Notepad 打开】&#xff0c;如下&#xff1a; 这…

c语言基础总结

1. c语言概述 c语言是计算机编程语言的一种&#xff0c;编程语言用于人和机器交流。 1.1 c语言特点 简洁 ​ c语言的语法简单&#xff0c;语句清晰明了&#xff0c;使得程序易于阅读和理解 高效 ​ c语言的执行效率高&#xff0c;可以用于开发需要高性能的应用程序 可移…
最新文章