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

server/2025/2/27 16:39:53/

本文来自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二次备份的规则利用多一次的机会保障系统稳定安全。


http://www.ppmy.cn/server/171082.html

相关文章

1、进程和线程之间有什么区别 【高频】

进程 是 调度 和 资源分配 的最小单位&#xff0c;线程 是 执行程序 的最小单位。一个进程可以运行多个线程。 进程与线程的区别 共享信息&#xff1a; 进程间之间共享信息不方便&#xff0c;通信比较麻烦&#xff0c;需要一些特殊机制&#xff0c;如管道、有名管道、共享内存…

android studio gradle 阿里镜像

阿里云gradle镜像地址&#xff1a;macports-distfiles-gradle安装包下载_开源镜像站-阿里云macports-distfiles-gradle安装包是阿里云官方提供的开源镜像免费下载服务&#xff0c;每天下载量过亿&#xff0c;阿里巴巴开源镜像站为包含macports-distfiles-gradle安装包的几百个操…

MacOS 终端选型

MacOS终端工具选型与技术栈建议 一、核心工具对比矩阵 工具名称最新版本核心优势适用场景推荐指数引用来源iTerm25.3分屏/自动补全/多语言支持/全局搜索全栈开发/服务器运维⭐⭐⭐⭐⭐19Warp1.4AI智能补全/块编辑/现代UI/跨平台协作新手友好/团队协作⭐⭐⭐⭐39Tabby2.0多协议…

PyCharm Professional 2025 安装配置全流程指南(Windows平台)

一、软件定位与核心功能 PyCharm 2025 是 JetBrains 推出的智能 Python IDE&#xff0c;新增深度学习框架自动补全、实时性能热力图等功能1。相较于社区版&#xff0c;专业版支持&#xff1a; Web开发&#xff08;Django/Flask&#xff09;数据库工具&#xff08;PostgreSQL/…

Git原理+使用(超详细)

Git初识 当我们写项目代码时&#xff0c;需要不断的更新版本&#xff0c;那么就需要一个东西去管理这些不同版本的文件—版本控制器。 目前最主流的版本控制器就是Git。它是一个可以记录工程的每一次改动和版本迭代的管理系统&#xff0c;同时方便多人协同作业。 &#xff0…

【SpringMVC】十分钟跑起来一个SpringMVC项目

目录标题 1 项目概述1.项目结构解析2. MVC项目的结构和每个组件的作用&#xff1a;3. 项目的工作流程&#xff1a;4 后期可以扩展的点&#xff1a;2.源码学习1. HelloController 类&#xff0c;Spring MVC控制器2 springmvc-servlet.xml - Spring MVC的主要配置文件3.web 目录 …

【深度学习神经网络学习笔记(一)】深度学习介绍

深度学习介绍 深度学习介绍前言1、深度学习和机器学习的区别1.1 特征提取方面1.2 深度学习应用场景1.3 深度学习代表算法-神经网络 2、神经网络的结构组成3、深度学习的效果特点 深度学习介绍 前言 深度学习作为机器学习的一个前沿领域&#xff0c;正推动着从图像识别到自然语…

W803|联盛德|WM IoT SDK2.X测试|(1)开箱:开发板及说明

前几天关注的联盛德微电子新推出了WM IoT SDK2.X&#xff0c;正式发布后&#xff0c;邀请用户参加“免费试用&#xff0c;赢千元大礼”活动&#xff0c;填写信息&#xff0c;等待统一发送&#xff0c;很快收到了板子。 活动地址&#xff1a;联盛德微电子WM IoT SDK2.X正式发布…