自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

汤庆

如果你不能简单说清楚,就是你没完全明白。

  • 博客(399)
  • 收藏
  • 关注

原创 【OceanBase诊断调优】—— 4013 内存爆问题的排查

本文介绍 4013 内存爆问题的排查。

2024-04-26 10:16:16 546

原创 【OceanBase诊断调优】——hpet(高精度时钟源)引起的CPU高问题排查

​最近总结一些诊断OCeanBase的一些经验,出一个【OceanBase诊断调优】专题出来,也欢迎大家贡献自己的诊断OceanBase的方法。

2024-04-25 10:16:22 681

原创 【OceanBase系列】—— 常用 SQL

对使用OB过程中常用的一些SQL进行了整理,对应的版本是 4.x。

2024-04-24 10:03:13 633

原创 【OceanBase系列】—— 常用运维操作(备忘)

本文记录一下OceanBase常用的运维操作,用于备忘

2024-04-24 09:59:24 1156

原创 【OceanBase诊断调优 】—— 索引调优

当我们发现某一条 SQL 存在性能问题时,我们可以通过很多方式对这条 SQL 进行优化,其中最常见的是索引调优。索引调优通过为数据表创建合适的索引来达到减少数据扫描量,消除排序等目的。索引调优是一种比较简单的调优方式,也是 SQL 出现性能问题时通常在第一时间考虑的优化方式。在单表扫描场景下创建一个合适的索引往往可以极大地提高 SQL 的执行性能。

2024-04-24 09:47:43 880

原创 【OceanBase诊断调优 】—— 如何快速定位SQL问题

大家在使用数据库的过程中,经常遇到慢sql,或者执行错误的sql,有些sql是很容易判断出来错误,以及sql运行比较慢的原因,但是有些sql就很难判断出来,如果遇到这种情况,我们该怎么处理,怎么判断SQL出错原因,以及是SQL需要优化,数据库本身配置是否设置好等,接下来我就跟大家简单介绍下,如何快速定位SQL问题。在开始之前,我们先来了解下一条SQL,在进入OceanBase数据库中执行时都经历了哪些模块。

2024-04-23 10:13:07 939

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

建索引可能因各种各样的原因产生报错,本文主要介绍碰到建索引报错时,如何定位到建索引报错的日志,方便后续进一步使用工具一键收集日志/根因分析,分析根本原因。建索引报错的日志分析的基本思路是根据建索引的基本步骤,判断建索引失败在哪一步,然后决策收集哪些机器的日志,排查的基本步骤如下。备注:此文档中涉及的语句适用于版本号>=4.2.3和 >= 4.3的。建索引主要分为几个阶段。

2024-04-18 10:37:08 1253

原创 《OceanBase江湖:一键诊断,剑指数据库奇症》

幸有江湖人称“数据库大侠”李靖接下这棘手之症,他将手持OceanBase生态中神秘兵刃——obdiag,以一键问诊之法,剑指数据库奇症,演绎一场武林版的数据库诊断传奇。面对庞大的OceanBase集群,李靖祭出obdiag,一键巡检,顷刻间,兵刃泛起幽蓝光芒,如内力灌注全身,对集群进行一次深度“内视”。数据世界,风起云涌,而“数据库大侠”李靖,始终仗剑行侠,护航企业数据之道,共赴数字武林之巅。在李靖的指导下,“云海阁”弟子依计行事,OceanBase集群内力流转渐复,业务响应如利剑出鞘,快如闪电。

2024-04-18 10:27:31 234

原创 这个项目我投了,给 OceanBase 数据库诊断提提速!

大道至简,最简单的才是最有用的,诚邀大家一同共建OceanBase数据库诊断

2024-04-16 11:29:01 382

原创 【OceanBase诊断调优】 —— obdiag是怎么玩转 20+ 故障场景的诊断信息一键采集的?

2024年初的时候和一些一线的支持人员交流,问他们支持过程中遇到了哪些痛点,都不约而同的提到,OceanBase出现问题的时候排查起来不容易,很多时候得找原厂的人支持,线上交流的效率又不高,故障排查的时候时间都是非常宝贵的,花在信息采集上的时间太多了,会影响服务的SLA。我给他们推荐obdiag这个工具,推荐他们用这个工具一行命令去进行信息采集,得到几位反馈说:"obdiag 的诊断信息采集是一项一项独立的,比如采集日志、采集主机信息、采集SQL信息..., 对于排查一个问题的时候,还是比较麻烦,

2024-03-14 15:29:18 796

原创 【OceanBase诊断调优 】—— 一文教会你排查锁冲突问题

OB采用了两阶段封锁机制来保证读写事务并发控制的正确性。因此,在高冲突场景下,行锁冲突是事务经常遇到的问题。但是对于很多OceanBase用户来说,并不清楚什么时候发生了锁冲突,锁冲突的表现又是什么?更别说去排查锁冲突的原因,定位锁冲突的行以及锁冲突的会话了。本文的目的就是交给大家一个系统性排查锁冲突的方法。字段类型是否为 NULL描述SVR_IPNO持锁或请求锁的 OBServer 节点的 IP 地址SVR_PORTNUMBER(38)NO。

2024-03-14 15:27:55 700

原创 【OceanBase诊断调优 】 —— 合并问题如何排查?

OceanBase 数据库的存储引擎基于 LSM-Tree 架构,将数据分为静态基线数据(放在 SSTable 中)和动态增量数据(放在 MemTable 中)两部分,其中 SSTable 是只读的,一旦生成就不再被修改,存储于磁盘;MemTable 支持读写,存储于内存。数据库 DML 操作插入、更新、删除等首先写入 MemTable,等到 MemTable 达到一定大小时转储到磁盘成为 SSTable。

2024-03-14 15:26:27 677

原创 【OceanBase诊断调优 】——全链路诊断日志看不懂?obdiag来帮你!

OceanBase 数据库是分布式数据库,因此调用链路复杂,当出现超时问题的时,往往无法快速定位是OceanBase 内部组件或是网络的问题,运维人员只能根据经验和 observer 日志进行分析。OB内核在4.0新增了trace.log日志,可以用于分析全链路诊断。全链路有两条路径,一条是从应用通过客户端(JDBC 或 OCI 等)下发请求给 ODP(代理服务器)访问 OBServer,访问结果返回给应用;

2024-03-14 15:24:43 350

原创 【OceanBase诊断调优】—— 敏捷诊断工具obdiag一键分析OB集群日志设计与实践

obdiag定位为OceanBase敏捷诊断工具。1.2版本的obdiag支持诊断信息的一键收集,光有收集信息的能力,没有分析能力怎么行,所以我们在obdiag的1.3.0版本加上了OB集群的日志分析能力。你可以一键去分析你的集群的OB日志,看看有没有一些异常情况。

2024-03-14 15:20:26 768

原创 【OceanBase诊断调优】 —— 敏捷诊断工具obdiag一键收集诊断信息实践

obdiag定位为OceanBase敏捷诊断工具。部署简单:提供rpm包和OBD上部署的模式,均可一键部署安装,可以选择部署到任意一台能连接到集群各个节点的上,并不局限于OBServer节点。集中式收集:单点部署,无需每台服务器部署。使用的时候只需要在部署机器上执行收集或分析命令即可;

2024-03-14 15:17:32 466

原创 写在云栖大会的感触:《诊断,为了不用诊断的价值》

本届云栖大会以“计算,为了无法计算的价值”为主题,个人理解“很多的价值是无法计算的,比如,你用着通讯软件和家人视频聊天、足不出户云游四海......这些附加价值是无法计算的。” 当时打算做obdiag这款工具的时候,初衷是希望“让诊断OceanBase 数据库变得更快更容易”,我们用OceanBase为什么要去诊断,是因为存在Bug, 不论是数据库本身,还是使用数据库的业务SQL,甚至是运维数据库的人,都会存在Bug,世界上不存在一款没有任何Bug的软件。我们要去做诊断,或者说我们做诊断的终极目标是啥?

2024-03-14 15:16:05 868

原创 【OceanBase诊断调优 】—— 带你认sql_audit性能视图

OceanBase在SQL性能诊断方面有个很有用的功能叫SQL审计视图(gv$sql_audit),OceanBase 4.0.0.0 及以上版本是gv$ob_sql_audit,可以方便开发运维排查在OceanBase运行过的任意一条SQL,不管这些SQL是成功还是失败,都有详细的运行信息记录。

2024-03-14 15:13:22 868

原创 【OceanBase诊断调优】 ——“神医”是如何炼成的

当遇到OceanBase的问题时候,很多工程师可能会感到无从下手,本文介绍了一般情况下OceanBase的故障诊断路径,大家可通过环境分析、日志分析、性能视图分析来定位和分析问题。同时给大家推荐了一个很好用的OceanBase敏捷诊断工具(OceanBase Diagnostic Tool) ,简称obdiag,帮助大家方便的获取这些故障信息。

2024-03-14 15:09:30 1383

原创 【Oceanbase系列】——obproxy

一、前言 可能大家对obproxy不是很了解,这里边我提一个类比的,mysql的mysql-router,大家应该就明白了,mysql-router是作为在mysql之上的一个"路由转发"的组件。obproxy对于oceanbase就像mysql-router之于mysql一样。二、obpoxy是什么OBPrxoy是为OceanBase数据库专门量身定制的反向代理服务器,用户的数据在OceanBase上以多副本的形式存放在各个ObServer上, OBProxy负责接收用户发过来的SQ..

2022-04-05 01:54:25 3957

原创 【数据库】——数据库索引宝典

一、前言一般对于数据库使用者来说,什么ACID,什么存储结构那些都是关心的,因为这些更多是开发数据库的人需要考虑的事情,你如果保证不了ACID,那我为什么要选择你的数据库。作为使用者,更多的要关注的点是性能、性能、性能,重要的事情说三遍。数据库的性能调优要展开讲的话,三天三夜也讲不完,今天主要说一下索引相关的事情,做个记录,也算是给自己留一份笔记吧。二、什么是索引索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始

2022-04-05 01:27:12 1128

原创 【Java】——MyBatis 中mapper.xml的语法

一、前言MyBatis是"半自动"的ORM框架,即SQL语句需要开发者自定义,MyBatis的关注点在POJO与SQL之间的映射关系。那么SQL语句在哪里配置自定义呢?就在Mapper.xml中配置。当然了该配置文件可以自定义文件名。文件的样式如下:<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mappe..

2022-01-29 19:22:10 14545 1

原创 【Golang】——利用time.Ticker做定时任务

一、前言 golang 的time.Ticker一般用来作为时间周期执行任务的。二、demo 这个是官网贴出的例子,作用是每10s钟会输出当前的时间。package mainimport ( "fmt" "time")func main() { ticker := time.NewTicker(time.Second) defer ticker.Stop() done := make(chan bool) go func() { time.Sle...

2021-11-21 01:16:33 4124

原创 【Oceanbase系列】——OceanBase SQL执行计划

一、前言 能点开我这篇文章的,相信应该都是有点数据库背景的,SQL语句在不同的人手中会写出不同的语句形式,比如经常遇到的SQL慢查询,这时候往往需要针对SQL进行优化。而像orancle和mysql中为保证SQL语句能够高效的运行,提供了一个Explain的命令,用来对SQL语句进行语义分析,供开发者来针对SQL进行优化。当然了 oceanbase是蚂蚁自研的分布式数据库,支持mysql和orancle两种模式,既然敢吹分布式这个牛,那这里边的执行计划就不得不提一下,毕竟你的sql是要跑在分布式...

2021-11-20 19:55:36 4106 1

原创 【OceanBase系列】——入门篇

一、前言 蚂蚁集团自主研发的分布式数据库 OceanBase 3.0 发布,同时,OceanBase 宣布正式开源,并成立 OceanBase 开源社区,社区官网同步上线,300 万行核心代码向社区开放。因为最近也是在学习ob的阶段,所以打算写一个oceanbase的系列,权当是笔记了。内容在官网基本都能找到,想系统的学习ob的,请移步官网。OceanBase数据库产品家族主要产品:a)OceanBase数据库内核:通过Paxos协议保证了高可用性,可以兼容MySQL和Oracle,同...

2021-11-07 20:21:34 3626

原创 【MySQL】——深入理解GTID文章系列

1. 深入理解mysql GTID 1:https://cloud.tencent.com/developer/article/1760569

2021-06-18 16:11:05 437 2

原创 【Mysql】——Redo log

一、前言mysql有多种日志,每种日志都有其特定的用途。redolog是mysql存储引擎为innodb时,特有的日志。innodb是mysql最常用的存储引擎,它的事务的持久性就是通过redolog保证的。...

2021-06-15 16:09:33 1494

原创 【MySQL】——mysql exporter源码分析

一、前言 最近在做mysql innodb cluster的监控,发现mysql innodb cluster的集群状态mei'you

2021-06-02 00:08:24 1038

原创 【k8s】——k8s scheduler调度器原理及代码分析

一、前言 我们都知道,k8s其实说的直白点是一个容器的管家,它管容器的创建、运行和销毁。在k8s中,万物都可以叫做资源,其实k8s的设计理念很像编程语言的面向对象,把一切资源化之后,每一种资源就是一种对象。在针对各种资源设计controller(控制器)和scheduler(调度器),有了这两个之后还需要通信机制,这个时候apiserver就来了,然后还需要数据存储(etcd)。你看这样一算下来,k8s的这点结构其实就说清楚了。 我今天重点聊一下k8s 的调度器。kube-sch...

2021-05-23 18:32:19 2790 3

原创 【k8s】——kubectl 插件管理(krew)以及使用

一、前言 玩过k8s的基本没有不熟悉kubectl 的,这玩意是k8s的命令行工具。我们今天重点讲的是kubectl 的插件管理工具krew。它的功能就是提供简单的方法下载、检索、管理其他插件,类似操作系统的apt、yum、brew等工具,其命名也似乎模仿的brew工具。kubectl插件机制在Kubernetes 1.14宣布稳定,进入GA状态。kubectl的插件机制就是希望允许开发者以独立的二进制形式发布自定义的kubectl子命令。kubectl插件可以使用任意语言开发,如可以是一个...

2021-05-21 00:28:44 3687 1

原创 【MongoDB】——golang操作mongodb数据库

一、前言 以前一直用着的"gopkg.in/mgo.v2"已经有日子没有人维护了,官方推出了mongo的golang driver,今天有空来看看。二、驱动包获取"go.mongodb.org/mongo-driver/bson" //BOSN解析包"go.mongodb.org/mongo-driver/mongo" //MongoDB的Go驱动包"go.mongodb.org/mongo-driver/mongo/options"三、数据库连接1. 连...

2021-05-18 00:39:29 4429

原创 【Go】——Golang处理HTTP/HTTPS请求

一、前言 不管你使用什么语言,HTTP协议是你绕不开的点。二、HTTP知识点补充 HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符。我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。那么,...

2021-05-07 14:21:24 5875

原创 【k8s】——Rancher(k8s图形化管理工具)

一、前言 Rancher 是为使用容器的公司打造的容器管理平台。Rancher 简化了使用 Kubernetes 的流程,方便开发者可以随处运行 Kubernetes(Run Kubernetes Everywhere),以便于满足 IT 需求规范,赋能 DevOps 团队。当然 Rancher 2.x 已经完全转向了 Kubernetes。Rancher 2.x 可以部署和管理在任何地方运行的 Kubernetes 集群。Rancher 可以创建来自 Kubernetes 托管服务提供商的集群...

2021-05-06 23:54:42 3343 1

原创 【Go】——golang知识点

一、前言 语言是一种解决问题的工具,工欲善其事必先利其器,今天总结一下golang的一些知识点,以便闲暇时候回顾。二、Golang知识点1. 在go语言中,new和make的区别?new 的作用是初始化一个指向类型的指针(*T)new函数是内建函数,函数定义:func new(Type) *Type使用new函数来分配空间。传递给new函数的是一个类型,不是一个值。返回值是 指向这个新分配的零值的指针。make 的作用是为 slice,map 或 chan 初始化并返...

2021-05-06 17:31:02 1101 1

原创 【k8s】——自定义的k8s controller

一、前言在 K8s 中当我们需要监控某个资源的变化并作一系列操作时,使用 K8s 提供的 controller 机制来实现,同时 K8s 官方提供了一个通用库client-go,通过它可以很容易实现自定义controller.Custom Resource是扩展Kubernetes的一种方式(另外一种就是通过聚合层APIapiserver-aggregation),而controller对指定的resource进行监听和执行对应的动作(watch,diff,action)。这里引申一点,我们一般来说..

2021-04-04 15:13:31 1581 1

原创 【Golang】——由浅入深分析并发利器sync.WaitGroup

一、前言 官方文档对sync.WatiGroup的描述是:一个waitGroup对象可以等待一组协程结束,也就等待一组goroutine返回。有了sync.Waitgroup我们可以将原本顺序执行的代码在多个Goroutine中并发执行,加快程序处理的速度。我们先来感受一下官方给出的样例:(官方给出的样例干的事情其实是访问三个网站,访问完成打印出来)package mainimport ( "fmt" "sync" "net/http")func mai...

2021-04-02 00:21:21 605

原创 【Tools】——云计算存储客户端工具s3cmd使用

一、前言 s3cmd 是一款 Amazon S3 命令行工具。它不仅能上传、下载、同步,还能设置权限,下面是完整的安装使用指南。二、安装与配置1. 安装pip install s3cmd# 或yum install python-s3cmd2. 配置2.1 通过命令行传递参数配置s3cmd --configure \ --access_key=<access_key> \ --secret_key=<secr...

2021-03-14 17:18:51 976

原创 【k8s】——peer-finder(一个用于给statefulset管辖的pod找“伙伴“的小工具)

一、前言 今天介绍一个小众工具,peer-finder, 这是一个简单的守护进程,golang写的,总代码量不到150行,但对StatefulSet非常有用。github 地址:https://github.com/kmodules/peer-finder/tree/master。介绍这个之前,先给大家补充一下知识点: 在Kubernetes中,大多数的Pod管理都是基于无状态、一次性的理念。例如Replication Controller,它只是简单的保证可提供服务的Pod数...

2021-01-23 20:43:47 2764

原创 【MySQL】——mysql root密码忘记如何登陆

一、前言 有时候忘了mysql的管理员密码,无法连接上上mysql。其实mysql留有后路,让你在忘记密码的情况下依然能登陆数据库。二、操作1)修改配置文件my.cnf,在配置文件[mysqld]下添加skip-grant-tables,重启MySQL服务即可免密码登录  其中--skip-grant-tables 选项前面曾经介绍过,意思是启动 MySQL 服务的时候跳过权限表认证。 启动后,连接到 MySQL 的 root 将不需要口令。[mysqld]skip-gran..

2020-12-26 23:25:38 738

转载 【Redis】——redis cluster介绍

一、前言 redis最开始使用主从模式做集群,若master宕机需要手动配置slave转为master;后来为了高可用提出来哨兵模式,该模式下有一个哨兵监视master和slave,若master宕机可自动将slave转为master,但它也有一个问题,就是不能动态扩充;所以在3.x提出cluster集群模式。二、redis-cluster设计 Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。每个节点都负责进行数据读写操作,每个...

2020-12-21 23:54:59 1928

原创 【数据库】——分布式数据库的分区总结

一、前言 本文涉及的概念较多,同时涉及到的数据库也较多。有redis、hbase、es、mongo、zk等,行文省略了很多细节,所以本文适合有一定分布式数据库经验的人,仅供参考。本文行文主要回答下边四个问题:分区是什么? 分区怎么分的? 分区之后怎么平衡? 分区之后如何路由?二、概念 分区(partition),在MongoDB,Elasticsearch中被称为分片(shard),在HBase中称之为区域(Region),Bigtable中则是表块(tablet),...

2020-12-20 09:33:19 1215 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除