当前位置: 首页 > news >正文

如何进行OceanBase 运维工具的部署和表性能优化

本文来自OceanBase 用户的实践分享

随着OceanBase数据库应用的日益深入,数据量不断攀升,单个表中存储数百万乃至数千万条数据的情况变得愈发普遍。因此,部署专门的运维工具、实施针对性的表性能优化策略,以及加强指标监测工作,都变得更为重要。以下为基于我们的使用场景,所采取的一些部署和优化措施分享。

一、OCP部署升级

1.OCP升级

(1)4.2.1BP1升级到4.2.2,本来以为毫无波澜但是下载完毕一键包并完成前期准备工作启动后发现无法登录OCP的服务器了,后台查看日志发现提示需要更新一下admin用户的权限,有小伙伴后续如果遇到密码正确就是无法通过监测的时候需要注意查看一下是不是提示admin账户权限不足使用echo "admin ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers更新一下权限设置应该就好了。

(2)OCP升级进入系统以后系统自动更新ocpAgent代理工具但是,这个版本跟4.2.1一样存在ocpAgent安装异常(OCP升级服务于本服务在一个设备情况下ocpAgent会报stat /home/admin/ocp_agent/pkg_store/ocp-agent-ce-4.2.1-20231208144448.el7.x86_64.rpm: no such file or directory解决方案也比较简单直接复制这个文件到这个位置即可重试)

(3)随后是升级OBProxy集群节点到最新版本,一切都顺利完成后开始测试相关告警功能和测试新增的监控大盘功能和之前提交的(UI错位等问题的解决情况),测试后发现UI问题已经基本解决完毕,发现了一处新的UI问题已经提交。

2.ES部署及OCP接入

为了让日志能进行链路查询记录,需要部署ES和OpenSearch,使用docker按照官网教程部署了OpenSearch和ES并配置相关信息后重启OCP即可接入,接口查看ES的记录情况发现均无异.(配置地址:https://www.oceanbase.com/docs/common-ocp-1000000000584788)

二、警告配置和一些异常处置/性能优化

(1)部署完毕后第一个告警就是时间不同步,但是我通过chrony测试发现一切正常,ocpAgent查看监控数据NTP时钟便宜数据也是正常范围。

(2)将该问题以及相关日志提交到问答论坛后很快就有相关专业工程师解答并提出测试说明,通过测试发现Debian系列系统存在clockdiff在sudo下权限不足的问题,回复为已知问题,正在修复。于是听取建议我将这个告警进行了屏蔽。

(3)性能异常警告:当天晚上发现一个“SQL 巡检,SQL 性能下降”的问题,一早通过OCP查看后发现是一个SQL存在超过平均查询时间较多的情况的一个告警。但是点击SQLID无法跳转到SQL详细信息页面,查看F12发现不存在该资源。

(4)黑屏问题定位:通过黑屏模式查询[select svr_ip, plan_type, elapsed_time, AFFECTED_ROWS, RETURN_ROWS, tx_id, usec_to_time(REQUEST_TIME), substr(query_sql, 1, 10000) from gv$ob_sql_audit where sql_id='B7A34188E00F96CA660B2D39A3968328'  order by elapsed_time desc limit 10;]找到了对应ID的SQL情况,使用该SQL到OCP对应租户的SQL诊断工具中搜索该SQL前部分关键词就获得了对应SQL请求信息。

(5)性能优化:通过查看索引情况以及字形情况以及针对SQLID进行链路查询发现了部分字段没有命中索引以及根据优化建议发现索引建立不足以及表设计不合理的三个问题。针对索引问题重新建立了索引。针对表设计不合理主要体现在当前表单为超大型表,数据量过千万,但是没有进行分区设计,也没有进行分段设计导致数据检索存在扫表情况,于是针对当前表进行了功能拆分划分了历时数据和热数据,历时数据清理到历史表并做分区处理,热数据存留当前表保障当前业务。

(6)SQLID无法连接异常提交:通过本次性能优化发现告警部分的SQLID无法被定位到SQL详情,通过后续查询后发现URL的[/diagnosis/1/realtime/2]这个部分应该为对应的集群和租户在当前环境下位[/cluster/1/tenant/2]修改后即可定位到SQL详情,发现该问题后就将相关问题通报到官方相关人员进行记录。

三、基于obdiag的一些集成化开发和畅想

1.obdiag是一个敏捷测试工具是ob官方的一个有效的集群日志收集和巡检的工具,在工作中可以提供异常建议以及指定脚本巡检等功能,在我的日常工作中也充当着重要的伙伴角色。

2.但是obdiag只有本地黑屏执行,配置文件也比较麻烦且报告也是用符号构成的,针对核心运维还好但是不可以进行任务分发到不同员工进行巡检基于该需求,我们计划开发一套带权限管理支持多人巡检,支持报告转换为Json并可视化的一套工具用于辅助多人运维的场景。

3.目前实现:

(1)已经完成报告的Json序列化实现,通过Go语言已经完成了报告的解析工作

(2)数据结构:

 type Table struct {TableName stringColRows   []TaskReport
}type TaskReport struct {Task       stringTaskReport string
}

(3)报告解析:

 func parseTable(input string) ([]Table, error) {lines := strings.Split(input, "\n")var table []Tablefor _, line := range lines {// 检查是否是表头行或分隔行if strings.HasPrefix(line, "+") {continue}// 按分隔符 "|" 分割cols := strings.Split(line, "|")if len(cols) < 3 {continue // 如果不是数据行,跳过}taskName := strings.TrimSpace(cols[1])taskReport := strings.TrimSpace(cols[2])// 如果是表名行,创建一个新的表if taskReport == "" {table = append(table, Table{TableName: taskName,})continue}// 如果是表头行,跳过if taskName == "task" && taskReport == "task_report" {continue}// 将提取的数据添加到切片中table[len(table)-1].ColRows = append(table[len(table)-1].ColRows, TaskReport{Task:       taskName,TaskReport: taskReport,})}return table, nil
}

(4)通过上述方法我们成功实现了数据解析工作,后续将结合gin框架等一些框架实现数据入库和可视化操作并实现可视化脚本以及可视化巡检执行和可视化报告解析。

(5)秉承着OB社区氛围建立本项目在完成基本功能后将全面开源到Github并在社区进行发布。

四、一些OceanBase的使用感想和未来期待

1.OB是国产开源分布式数据库性能和部署以及开源社区氛围最好的选择,这也是我们正式项目的选择,在我们公司的CRM项目中已经稳定运行并使用了一年时间,其中版本从3.xx升级到现在的4.2.1BP4每一次升级都能感受到团队的努力付出以及听取社区的各种建议意见。

2.有浓厚的社区氛围才能使得一个开源产品能够有生命力,才能催生企业产品有更多的价值,相信OB在未来的道路上能越走越远。我们也愿意陪着OB一起成长,为社区添砖加瓦贡献自己的力量和智慧。

3.未来我们将引入更多系统接入到OB集群,计划将ERP系统以及其他管理业务系统引入OB并优化集群建立方式加强闪存集群的建设以及加强OOS二次备份的规则利用多一次的机会保障系统稳定安全。

相关文章:

如何进行OceanBase 运维工具的部署和表性能优化

本文来自OceanBase 用户的实践分享 随着OceanBase数据库应用的日益深入&#xff0c;数据量不断攀升&#xff0c;单个表中存储数百万乃至数千万条数据的情况变得愈发普遍。因此&#xff0c;部署专门的运维工具、实施针对性的表性能优化策略&#xff0c;以及加强指标监测工作&…...

docker简介-学习与参考

docker Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。 容器是完全使用沙箱…...

AcWing 蓝桥杯集训·每日一题2025·密接牛追踪2

密接牛追踪2 农夫约翰有 N 头奶牛排成一排&#xff0c;从左到右依次编号为 1∼N。 不幸的是&#xff0c;有一种传染病正在蔓延。 最开始时&#xff0c;只有一部分奶牛受到感染。 每经过一个晚上&#xff0c;受感染的牛就会将病毒传染给它左右两侧的牛&#xff08;如果有的话…...

LeetCode 每日一题 2025/2/24-2025/3/2

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 2/24 1656. 设计有序流2/25 2502. 设计内存分配器2/26 1472. 设计浏览器历史记录2/27 2296. 设计一个文本编辑器2/28 2353. 设计食物评分系统3/1 131. 分割回文串3/2 132. …...

TeX Live 2025 最新版安装与中文环境配置全教程(Windows/Mac/Linux)

一、软件定位与特性 TeX Live 是由国际TeX用户组&#xff08;TUG&#xff09;维护的跨平台专业排版系统&#xff0c;支持LaTeX、XeLaTeX等多种排版引擎&#xff0c;广泛应用于学术论文、书籍出版等领域。2025版核心升级&#xff1a; 智能编译&#xff1a;自动检测编码错误并提…...

Android实现漂亮的波纹动画

Android实现漂亮的波纹动画 本文章讲述如何使用二维画布canvas和camera、矩阵实现二、三维波纹动画效果&#xff08;波纹大小变化、画笔透明度变化、画笔粗细变化&#xff09; 一、UI界面 界面主要分为三部分 第一部分&#xff1a;输入框&#xff0c;根据输入x轴、Y轴、Z轴倾…...

JAVA学习笔记038——bean的概念和常见注解标注

什么是bean? Bean 就是 被 Spring 管理的对象&#xff0c;就像工厂流水线上生产的“标准产品”。这些对象不是你自己 new 出来的&#xff0c;而是由 Spring 容器&#xff08;一个超级工厂&#xff09;帮你创建、组装、管理。 由 Component、Service、Controller 等注解标记的…...

自然语言处理NLP入门 -- 第十节NLP 实战项目 2: 简单的聊天机器人

一、为什么要做聊天机器人&#xff1f; 在互联网时代&#xff0c;我们日常接触到的“在线客服”“自动问答”等&#xff0c;大多是以聊天机器人的形式出现。它能帮我们快速回复常见问题&#xff0c;让用户获得及时的帮助&#xff0c;并在一定程度上减少人工客服的压力。 同时&…...

【网络安全 | 渗透工具】小程序反编译分析源码 | 图文教程

未经许可,禁止转载。 本文仅供学习使用,严禁用于非法渗透测试,笔者不承担任何责任。 文章目录 1、下载Proxifier2、下载反编译工具unveilr3、寻找小程序文件包4、对文件包进行反编译5、对源码进行分析6、渗透思路6.1、查找敏感信息泄露6.2、解析加解密逻辑6.3、枚举 API 接口…...

uniapp 系统学习,从入门到实战(六)—— 样式与布局

全篇大概 4700 字(含代码)&#xff0c;建议阅读时间 30min &#x1f4da; 目录 Flex 布局在 UniApp 中的应用响应式设计与适配多端使用 SCSS 提升样式开发效率实战案例演示总结 1. Flex 布局在 UniApp 中的应用 1.1 基础布局实现 通过 display: flex 快速构建弹性容器&#…...

‘ts-node‘ 不是内部或外部命令,也不是可运行的程序

新建一个test.ts文件 let message: string = Hello World; console.log(message);如果没有任何配置的前提下,会报错’ts-node’ 不是内部或外部命令,也不是可运行的程序。 此时需要安装一下ts-node。 npm install...

mysql 全方位安装教程

下载 MySQL 【官网下载地址】 注意要选择较大的哪个安装包&#xff0c;小的安装包是一个安装器。 我们不用登录&#xff0c;直接下载 直接运行下载好的安装包 MySQL如果是 安装包安装, 可以图形化界面自主配置 如果是压缩包解压, 可以配置 配置文件, 可以解压安装到指定的…...

22-接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 方法一&#xff1a;双指针法 思路 使用两个指针 left 和 right 分别指向数组的两端&#xff0c;同时记录左边的最大高度 leftMax 和右边的最大高度 rig…...

使用Spring Boot与达梦数据库(DM)进行多数据源配置及MyBatis Plus集成

使用Spring Boot与达梦数据库(DM)进行多数据源配置及MyBatis Plus集成 在现代企业级应用开发中&#xff0c;处理多个数据源是一个常见的需求。本文将详细介绍如何使用Spring Boot结合达梦数据库&#xff08;DM&#xff09;&#xff0c;并通过MyBatis Plus来简化数据库操作&…...

leetcode28 找出字符串第一个匹配值的下标 KMP算法

KMP 算法——快速的从主串中找到模式串 当出现字符串不匹配时&#xff0c;可以知道一部分之前已经匹配的文本内容&#xff0c;可以利用这些信息避免从头再去做匹配了。 KMP 算法 比较指针不回溯&#xff0c;仅仅是后移模式串。 每次不匹配的时候&#xff0c;找之前已匹配部分…...

【Bug】natten:安装报错(临近注意力机制的高效cuda内核实现)

正常安装natten报错 pip install natten 报错 可以尝试使用以下网站进行安装 https://shi-labs.com/natten/ 可以根据自己的cuda与pytorch版本进行安装 之间复制命令即可&#xff0c;不需要进行任何修改...

AI 实战2 - face -detect

人脸检测 环境安装源设置conda 环境安装依赖库 概述数据集wider_face转yolo环境依赖标注信息格式转换图片处理生成 train.txt 文件 数据集展示数据集加载和处理 参考文章 环境 安装源设置 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/f…...

Spring Boot 项目开发流程全解析

目录 引言 一、开发环境准备 二、创建项目 三、项目结构 四、开发业务逻辑 1.创建实体类&#xff1a; 2.创建数据访问层&#xff08;DAO&#xff09;&#xff1a; 3.创建服务层&#xff08;Service&#xff09;&#xff1a; 4.创建控制器层&#xff08;Controller&…...

从Java到MySQL8源码:深入解析PreparedStatement参数绑定与执行机制

引言 在数据库开发中&#xff0c;PreparedStatement&#xff08;预处理语句&#xff09;是防止SQL注入、提升性能的重要工具。它通过分离SQL结构与参数值&#xff0c;不仅增强了安全性&#xff0c;还能利用预编译优化执行效率。本文将从Java JDBC驱动和MySQL 8源码的双重视角&…...

mysql的主从同步

1、异步复制&#xff1a;这是MySQL默认的复制模式。在这种模式下&#xff0c;主库在执行完客户端提交的事务后会立即将结果返回给客户端&#xff0c;并不关心从库是否已经接收并处理。这种模式的优点是实现简单&#xff0c;但缺点是如果主库崩溃&#xff0c;已经提交的事务可能…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、基础概念 1. 哈希核心思想&#xff1a; 哈希函数的作用&#xff1a;通过此函数建立一个Key与存储位置之间的映射关系。理想目标&#xff1a;实现…...