PolarDB-X 问题诊断与定位系统搭建赛题解析 | 学习笔记

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 快速学习 PolarDB-X 问题诊断与定位系统搭建赛题解析

开发者学堂课程【第八届大学生创新创业大赛阿里命题数据库命题解析PolarDB-X 问题诊断与定位系统搭建赛题解析学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/1045/detail/15208


PolarDB-X 问题诊断与定位系统搭建赛题解析


内容介绍:

一、PolarDB-X 介绍

二、性能监控

三、日志监控

四、性能剖析

通过这节课可以对 PolarDB-X 诊断与定位体系有更深入的了解,知道如何诊断PolarDB-X 相关的问题,如果是一位开发者,想对监控与诊断系统进行扩展也能受到很好的启发。


一、PolarDB-X 介绍

1、PolarDB-X是云原生的分布式关系型数据库已经于2021年进行正式开源,在公有云上也得到一众客户的好评,它的技术特征有三点,作为分布数据库,可能会有单机数据库一些区别,但是尽可能做到让分布式数据库能有跟单机mysql一样类似的使用体验。一个是透明分布式就是用户可以像mysql一样,用PolarDB-X数据库,降低用户的上手成本,还有全局一致的分布式事务,是比较大的挑战,用户使用单机mysql一样使用分布式数据库,因为下面会用好几个dn,每个dn都有blog,需要有全局一致的逻辑日志流服务给用户输出一份blog,用户就可以用mysql生态里面的工具,比如Ktellmaxwell消费blog,同时是HTaP的数据库具有基于分布式并行执行框架,也就是MPP进行混合复杂的处理能力,优化器会根据语句的复杂程度判断它是tp的sql还是ap的sql,选择不同的执行方式加速它的执行。

2、PolarDB-X整体架构由四个组件组成。一个是GMS元数据存储整个系统里的元数据,比如库名表名列信息还有系统参数。计算节点主要负责接收用户sql,对sql进行解析,优化生成计划,执行计划,操作存储节点,对存储节点的数据进行汇总,返回到用户客户端,存储节点主要是负责数据的持久化,还有单机事物的处理,比如差异事务里面的分支事务的处理,在mysql基础上进行修改,CDC节点通常被称为日志节点,主要处理来自各个存储节点上blog的规定排序,给用户生成单份的逻辑blog,就像单机mysql生成blog一样。image.png

3、如何从哪方面对它进行监控,首先需要解对什么进行监控,在系统里面有哪些监控对象,部署视图,可以看到典型的部署形态,数组介绍,进行好几个容器,一个容器里面可以跑计算节点,cdc节点还元数据节点,存储节点,元数据节点和存储节点就是mysql进程,可以用相同的监控方式监控它,计算节点和cdc节点是java程序,对java程序的监控手段同样可以用到计算节点和cdc节点比如jvm的监控,指标型监控,监控对象是宿主机,容器,jvm,进程本身,引擎,引擎就是计算引擎,cdc引擎,还有mysql引擎。image.png


二、性能监控

1、性能监控有指标,确定监控对象,让每个监控对象有所关心的监控指标,监控指标大类分成五类,引擎,容器,主机,jvm,每个引擎是有不同实现方式,都有想要输出的监控指标,比如mysql引擎,它可以分为两类,sql引擎和存储引擎,两层都有不同的监控指标,可以通过指令获得指标,周期性的访问得到指标。计算引擎,比如qps,tps,rt指标都可以通过访问计算引擎通过端口发送指令拿到,cdc引擎也提供了类似的接口。容器监控可以监控内存,cpu,硬盘io,网络io,存储空间。指标同样可以监控主机上的指标,进程相关的,内存使用率,cpu使用率,cdc和计算节点用的是java写的,还添加了一个jvm监控,java进程启动时,它亲自把堆的内存都给预先分配好,这时单纯接进程的内存使用率,可能一直都是一个值,看不出什么,所以需要增加堆使用率的监控,监控率100%。Gc情况,gc次数,gc时间,qbs突然抖一下,可能会看gc情况,当时有没有发生大的gc,造成一些抖动,监控数据有了之后,还有一个展示,PolarDB-X是分布式系统,分布式系统会跨一个整体的情况,通过节点之间的比较,查看节点有没有异常,多节点视角,异常节点会看其它的指标,更详细的节点指标就是单节点视角。image.png

2、每个指标都提供了获取指标的访问方式,比如计算节点,在管理端口端可以通过输入show@@stasts,show@@stc,qps,或者rt,mysql的数量的一些指标,访问端口时可以用show trans看当前的事务,会话情况,物理会话情况,存储节点就是mysql,通过global status连接监控指标,processlist获取会话信息,cdc节点获得blog消费延迟和吞吐量。

3、公有云上监控里面的qps指标,汇总视角是看多个节点,image.png

两个节点把qps加起之后的指标,多节点看各个节点qps的情况,单个节点,图里面可以显示多个指标,多个指标并行比较,可以看到qps和物理qps差不多,可以基本判断检查。

 

三、日志监控

1、性能指标就是单纯的数字,数字看起来效果很好,也可以很直观的判断出系统是否处于一个正在运行的状态,找根本原因的时候光靠性能指标不够,需要看系统的日志,sql日志,错误日志,或者其他日志,cpu升高是什么原因造成的,需要看日志,所以会有日志结构image.png

日志监控和性能监控的监控对象是一样的,计算节点,需要sql,除了判断数据库异常之外,一条sql占用资源太多了,cpu突然升高,是哪条sql造成的,sql位置起到审计的作用,一个用户没有delate数据,为什么数据没有了,可以看sql日志,有可能是根本没有delate,用户记错,数据本来就没用,起到审计作用,很多异常都是慢日志造成的,慢日志量也会稍微少一点,可以快速诊断数据库性能问题,事务的开始,启动情况,启动时间,这段时间有没有重启过,错误日志比较重要,数据库发生异常的时候可以看异常情况哪里出现问题,gc日志,存储节点就是mysql,mysql也需要看三个日志,sql日志,慢日志,错误日志,需要注意计算节点和存储节点sql日志可以联动,都有id把它们关联起来,一个计算节点的sql日志可能会执行的时候变成多条存储节点上的sql日志,它们都会用相同的id 关联起来,形成方便于全链路的诊断,cdc是java程序,有gc日志和错误日志,主要看系统日志,计算节点没有任何日志,被操作系统给cue掉,可以翻系统日志。

2、准备工作是在k8s集群上部署好PolarDB-X实例,从节点打开general log,general log会记录每条存储节点会收到sql日志,比如发事务,可以看到ts id,begin有ts id,update也有ts id,前缀一样,后面的杠多少就表示是第几条sql,update表示事务里面第一条sql,ts id可以到存储节点上group,可以查到sql产生哪些物理sql,突然发现存储节点比较异常,猜测是慢sql导致,通过存储节点慢sql上的ts id反查用户的sql,可以查出用户是哪条sql导致的。image.png


四、性能剖析

1、突然发现节点cpu突然升高,监控日志都没有发现升高的原因是什么,需要进行性能剖析,执行什么方法,在干什么事情,用到方法级别或者函数级别。

2、压测准备,一个PolarDB-X实例,JMeter压测程序,在PolarDB-X实例建库和建表,拆分表。

建表语句

CREATE TABLE 'busutb' (

'id' int(11) NOT NULL AUTO INCREMENT,

myname' varchar(20) NOT NULL,

PRIMARY KEY ('id') ,

) dbpartition by hash('id') tbpartition by hash('id')

插入数据

insert into busutb(myname)

values('busu1'),('busu2'),('busu3'),('busu4'),('busu5');

JMeter不停的插入数据,sql语句是全表遍历,会访问存储节点上每一个分库,不是点插。

3、火焰图生成演示分为两部分,生成节点,存储节点的演示。首先给PolarDB-X施加流量,JMeter压测,使用sql,k8s集群。image.png

用async-profiler工具生成火焰图,用压测流量是因为cpu升高之后,火焰图效果会比较好,便于演示,记录命令,把30s缩短为10s,在目录下生成图,拷贝到本地可以用浏览器看,生成dn节点,dn节点有一些配置在容器内不可操作,登陆到宿主机上操作,在宿主机上和容器内pid是不一样的,查容器内的pid。看容器到宿主机上的映射,宿主机上4个pid。image.png

是同一个进程,再通过profiler工具生成性能采样的数据,用10s,换pid。image.png

重复,两个火焰图都在目录下面,可以通过浏览器查看。Cn计算节点,主要是在处理查询,通过判断可以查看在干什么,cpu突然升高的原因,性能调用时火焰图很有用。image.png

Dn处理正常的函数,遇到问题时会起到很关键的作用。image.png

Cpu一直高,可以用以上的方式进行诊断,如果半夜cpu突然升高,dba起来的时候已经好了,这时需要在程序运行期间进行持续的数据采集,才能看过去时间段进行性能剖析,性能,持续采集一直在跑,需要关注自身的性能,自身的性能不能很差,肯定有问题,实例对采集对象产生性能损耗,实例变的很慢,得不偿失,没有任何影响也是不可能的,把影响控制在百分之一或者百分之零点五的损耗,进行压测,判断究竟损耗多少,资源,磁盘,cpu,内存使用量最好控制在一定的范围内,交互,希望生成火焰图比较好的查验方式,不同监控维度上联动,跟性能监控进行联动,突然发现cpu升高,划一下点性能剖析,日志监控,性能监控进行联动,交互方式最好能提供文本页面,只判断cpu升高,内存升高也可以用类似的工具进行剖析。

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
3月前
|
物联网 大数据 定位技术
基于RFID、室内定位技术的图书馆定位系统功能解析
维小帮图书馆定位导航系统解决了复杂布局与找书难题,采用RFID、室内定位技术,结合大数据与云计算,提供电子地图、VR云览、AR导航及图书位置指引。通过集成座位预约,优化资源分配,提升读者体验,促进图书馆与城市的智慧化建设。
125 3
基于RFID、室内定位技术的图书馆定位系统功能解析
|
3月前
|
关系型数据库 分布式数据库 数据库
PolarDB-X源码解析:揭秘分布式事务处理
【7月更文挑战第3天】**PolarDB-X源码解析:揭秘分布式事务处理** PolarDB-X,应对大规模分布式事务挑战,基于2PC协议确保ACID特性。通过预提交和提交阶段保证原子性与一致性,使用一致性快照隔离和乐观锁减少冲突,结合故障恢复机制确保高可用。源码中的事务管理逻辑展现了优化的分布式事务处理流程,为开发者提供了洞察分布式数据库核心技术的窗口。随着开源社区的发展,更多创新实践将促进数据库技术进步。
68 3
|
4月前
|
监控 关系型数据库 分布式数据库
PolarDB时间范围内PCU用量统计:深度解析与操作指南
了解PolarDB云原生数据库的PCU计费至关重要,1PCU相当于1核2GB资源。文章详述如何统计指定时间内PCU用量:登录控制台,查看集群监控,导出数据分析,或使用API接口获取信息。统计结果有助于分析数据库负载、优化资源使用和成本控制。通过对比不同时间段的PCU用量,用户可做出扩展或优化决策。未来,PolarDB有望提供更强大的统计工具。
|
4月前
|
存储 关系型数据库 Serverless
PolarDB产品使用问题之要获取并解析Binlog,该如何操作
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5月前
|
存储 关系型数据库 分布式数据库
【PolarDB开源】PolarDB高可用架构解析:确保业务连续性的关键设计
【5月更文挑战第22天】阿里云PolarDB是一款高可用、高性能的云原生数据库,采用分布式共享存储架构实现计算与存储分离。通过主从复制保证数据实时同步,当主节点故障时,从节点能快速接管。此外,PolarDB提供自动故障转移和数据备份恢复功能,确保业务连续性和数据安全性。一个简单的Python SDK使用示例展示了查询数据的过程。总之,PolarDB通过多种机制保障了企业在异常情况下的服务稳定和数据完整性。
259 5
|
5月前
|
XML Java 数据库
【后台开发】TinyWebser学习笔记(3)HTTP连接与解析
【后台开发】TinyWebser学习笔记(3)HTTP连接与解析
125 4
|
5月前
|
存储 关系型数据库 分布式数据库
【PolarDB 开源】PolarDB 存储引擎优化:PolarStore 的深度解析与优化
【5月更文挑战第25天】PolarDB的PolarStore存储引擎以其高效索引和优化的压缩算法提升数据存储与访问性能。通过并发控制保证事务正确性,同时支持数据压缩和索引优化。在实际应用中,优化包括调整索引结构、数据分区、事务管理及定期数据库维护。结合业务需求进行深度优化,可最大化PolarStore的性能潜力,推动数据库系统发展。
168 0
|
5月前
|
关系型数据库 MySQL 分布式数据库
PolarDB for MySQL数据库外网连接解析失败的原因可能有以下几点
【2月更文挑战第16天】PolarDB for MySQL数据库外网连接解析失败的原因可能有以下几点
63 1
|
5月前
|
关系型数据库 MySQL 分布式数据库
PolarDB for MySQL数据库外网连接解析失败的原因
【2月更文挑战第5天】PolarDB for MySQL数据库外网连接解析失败的原因
97 8
|
5月前
|
关系型数据库 MySQL 分布式数据库
PolarDB for MySQL数据库外网连接解析失败的原因可能有以下几点
【1月更文挑战第21天】【1月更文挑战第105篇】PolarDB for MySQL数据库外网连接解析失败的原因可能有以下几点
82 1

推荐镜像

更多