当前位置: 首页 > 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;已经提交的事务可能…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...