性能诊断工具DBdoctor如何快速纳管数据库PolarDB-X

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 1个月
简介: DBdoctor是一款基于eBPF技术的数据库性能诊断工具,已通过阿里云PolarDB分布式版(V2.3)认证。PolarDB-X是阿里云的高性能云原生分布式数据库,采用Shared-nothing和存储计算分离架构,支持高可用、水平扩展和低成本存储。PolarDB-X V2.3.0在读写混合场景下对比开源MySQL有30-40%的性能提升。DBdoctor能按MySQL方式纳管PolarDB-X的DN节点,提供性能洞察和诊断。用户可通过指定步骤安装PolarDB-X和DBdoctor,实现数据库的管理和性能监控。

DBdoctor 是一款为数据库内核级性能诊断工具,利用eBPF技术深入数据库内核,致力于解决数据库的一切性能问题。

近日,DBdoctor(V3.1.0)正式通过了阿里云PolarDB分布式版(V2.3)产品集成认证测试,并获得阿里云颁发的产品生态集成认证。

微信图片_20240508175113.png
图片

本文将介绍PolarDB的特性,以及如何快速纳管数据库PolarDB-X。

微信图片_20240509165827.png
图片

PolarDB-X 是阿里自主设计的高性能云原生分布式数据库产品,采用 Shared-nothing 与存储分离计算架构,支持集中式和分布式一体化形态,具备金融级数据高可用、分布式水平扩展、混合负载、低成本存储和极致弹性等能力,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。

2023年10月份,PolarDB-X 开源正式发布V2.3.0版本,重点推出集中式形态标准版,将DN节点提供单独服务(存计未分离)。在性能场景上,采用生产级部署和参数(开启双1 + Paxos多副本强同步),相比于开源MySQL 8.0.34,PolarDB-X在读写混合场景上有30~40%的性能提升,可以作为开源MySQL的最佳替代选择。

PolarDB-X架构图

微信图片_20240509165833.png

PolarDB-X 采用 Shared-nothing 与存储计算分离架构进行设计,系统由4个核心组件组成

  • 计算节点(CN, Compute Node)

计算节点是系统的入口,采用无状态设计,包括 SQL 解析器、优化器、执行器等模块。负责数据分布式路由、计算及动态调度,负责分布式事务 2PC 协调、全局二级索引维护等,同时提供 SQL 限流、三权分立等企业级特性。

  • 存储节点(DN, Data Node)

存储节点负责数据的持久化,基于多数派 Paxos 协议提供数据高可靠、强一致保障,同时通过 MVCC 维护分布式事务可见性。

  • 元数据服务(GMS, Global Meta Service)

元数据服务负责维护全局强一致的 Table/Schema, Statistics 等系统 Meta 信息,维护账号、权限等安全信息,同时提供全局授时服务(即 TSO)。

  • 日志节点(CDC, Change Data Capture)

日志节点提供完全兼容 MySQL Binlog 格式和协议的增量订阅能力,提供兼容 MySQL Replication 协议的主从复制能力。

PolarDB-X基于Paxos的MySQL三副本工作原理

  • 在同一时刻,整个集群中至多会有一个Leader节点来承担数据写入的任务,其余节点作为follower参与多数派投票和数据同步
  • Paxos的协议日志Consensus Log,全面融合了MySQL原有的binlog内容。在Leader主节点上会在binlog协议中新增Consensus相关的binlog event,同时在Follower备节点上替换传统的Relay Log,备库会通过SQL Thread进行Replay日志内容到数据文件,可以简单理解Paxos Consensus Log ≈ MySQL Binlog
  • 基于Paxos多数派自动选主机制,通过heartbeat/election timeout机制会监听Leader节点的变化,在Leader节点不可用时Follower节点会自动完成切主,新的Leader节点提供服务之前需等待SQL Thread完成存量日志的Replay,确保新Leader有最新的数据。

PolarDB-X技术特点

  • 高性能,采用单Leader的模式,可以提供类比MySQL semi-sync模式的性能

  • RPO=0,Paxos协议日志全面融合MySQL原有的binlog内容,基于多数派同步机制确保数据不丢

  • 自动HA,基于Paxos的选举心跳机制,自动完成节点探活和HA切换。

微信图片_20240509165839.png

1)准备已有集中式版本的PolarDB-X
如果只是用于测试验证可以手动进行PolarDB-X安装,可按照以下方式进行安装部署
a)下载
下载地址:

https://openpolardb.com/download

微信图片_20240509165846.png图片

b)PolarDB-X数据库安装和登录

# 依赖包安装

rpm -ivh t-polardbx-engine-2.3.0-b959577.el7.x86_64.rpm
yum install libaio*

# 创建并切换到 polarx 用户

useradd -ms /bin/bash polarx
echo "polarx:polarx" | chpasswd
echo "polarx ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoerssu - polarx# 创建必要目录mkdir polardbx-enginecd polardbx-engine && mkdir log mysql run data tmp

#创建my.cnf配置文件

[mysqld]
basedir = /opt/polardbx-engine
log_error_verbosity = 2
default_authentication_plugin = mysql_native_password
gtid_mode = ON
enforce_gtid_consistency = ON
log_bin = mysql-binlog
binlog_format = row
binlog_row_image = FULL
master_info_repository = TABLE
relay_log_info_repository = TABLE

# change me if needed
datadir = /home/polarx/polardbx-engine/data
tmpdir = /home/polarx/polardbx-engine/tmp
socket = /home/polarx/polardbx-engine/tmp.mysql.sock
log_error = /home/polarx/polardbx-engine/log/alert.log
port = 4886
cluster_id = 1234
cluster_info = 127.0.0.1:14886@1

[mysqld_safe]
pid_file = /home/polarx/polardbx-engine/run/mysql.pid

#初始化

/opt/polardbx_engine/bin/mysqld --defaults-file=my.cnf --initialize-insecure

#启动

/opt/polardbx_engine/bin/mysqld_safe --defaults-file=my.cnf &

#登录数据库

mysql -h127.0.0.1 -P4886 -uroot

2)DBdoctor一键安装部署
环境要求:4c8g
下载安装包:
https://www.hisensecloud.com/col.jsp?id=126
解压安装包并执行

./dbd -I

微信图片_20240509165851.png

安装成功后登录http://<部署服务的主机ip>:13000
登录账号:tester/Root2023!
详细安装使用文档:
https://www.hisensecloud.com/h-col-144.html

3)DBdoctor纳管PolarDB-X
在部署的PolarDB-X进程层面我们能看到几乎和MySQL的集群一致,DBdoctor可以完全按照MySQL的方式进行纳管。DBdoctor的PolarDB-X纳管是按照集群的DN节点维度进行纳管的(DN在进程层面相当于mysqld),上面三个节点相当于对每个节点进行依次纳管。

微信图片_20240509165857.png

a)首先在PolarDB-X上创建数据库账号并授予权限

create user zx identified by 'Root2023!';
GRANT SELECT, PROCESS, SHOW VIEW ON *.* TO 'zx'@'%';

b)在DBdoctor的实例列表页面进行集中式PolarDB-X纳管
切换到‍实例列表的tab,点击实例纳管按钮,进行实例录入。

① 录入实例的主数据库基本信息,并进行连通性检测

点击“实例纳管”按钮可进行用户已有存量的数据库实例录入 。

  • 可配置该实例的数据库基本信息,包括实例备注、数据库访问地址

  • 可设置数据库实例的账号信息,包括实例的账号和密码

  • 可进行数据库实例的连通性检测

微信图片_20240509165903.png

② 配置数据洞察

  • 设置洞察日志存储的天数(默认为10天)

③ 选择采集方式
针对PolarDB-X数据采集方式选择部署Agent,用来采集主机和实例性能数据,锁和审计日志相关当前版本还不支持,后续会考虑对该引擎的适配支持。

微信图片_20240509165908.png

agent系统支持说明:目前仅支持X86_64系统,不支持ARM及X86_32服务器

微信图片_20240509165913.png

1)开启性能分析

查看实例列表找到PolarDB-X的纳管数据库节点,点击该实例节点的性能分析开关就可以对该实例进行性能洞察功能接管。PolarDB-X的锁分析功能暂未开放(审计日志和4大锁场景诊断),需要后续版本GA后才能支持该功能。

微信图片_20240509165921.png

2)查看性能洞察

点击性能洞察按钮进行该实例的性能分析。

微信图片_20240509165926.png

点击后可以查看该实例的性能洞察分析结果。

微信图片_20240509165931.png

性能洞察的详细功能主要分为下面7个部分

1)实例搜索:用户可以选择已接管的实例进行性能洞察的功能展示,实例指定时间区间或者近5m、1h、5h、24h、2d的快速时间选择搜索,并可指定刷新频率。

2)关键资源:展示实例关键资源的使用情况来评估是否存在资源瓶颈,显示该实例的DB维度/主机维度的关键资源使用率指标的趋势图,指标包括CPU使用率、MEM使用率、IOPS使用率、DISK Space使用率、连接数使用率。同时展示当前时间区间内的各指标的最大值。

3)业务流量:展示业务的流量指标,包括网络包的进出流量,数据库层面的业务QPS情况。

4)AAS:通过业务的数据库平均活跃会话来展示数据库的负载,同时展示负载中的TOP等待事件。

5)关联SQL:展示AAS负载相关联的根因SQL,同时可以查看该SQL的最差样本,并可以进行执行计划展示。

6)业务负载流量分布:按照用户/来源服务IP维度展示AAS负载,评估数据库负载问题的源头来自哪个业务系统。

7)专家经验库:详细展示性能问题事件的专家经验文档,从原理上解释这一事件是如何产生,应该怎样进行优化。

性能洞察实践
性能洞察最大特色是可以将上面所有维度的指标性能数据通过时间轴关联起来,并进行分析。比如上面的CPU异常的Case我们只需要4步走即可找到问题SQL根因。

  • step1:cpu资源指标在15:45~16:20发生抖动,CPU存在打满的情况
  • step2:在AAS模块中我们能看到数据库的活跃会话数在这一时间区间内远超Max vCPU水位线,说明存在性能瓶颈
  • step3:可以看到性能瓶颈的事件是Sending data(即绿色颜色事件),而这一颜色在AAS趋势图中占的面积最大,点击事件也可以看到最右边的专家经验文档。
  • step4:基于这个面积最大颜色的事件,我们能找到绿色颜色的SQL为第一条,即导致CPU飙高的根因SQL。点击展开这个SQL可以展示这个SQL的最差样本,点击执行计划发现扫描全表扫描4w多行,对SQL进行添加索引即可。
    微信图片_20240509165938.png

为了给您提供更进一步的服务,我们邀请您关注【DBdoctor服务】公众号,后台回复“进群”即可加入我们的技术交流群,进群用户可免费获得一个月的高阶 License。同时群内还会不定期发送问卷抽奖活动,您将有机会获得一年期的企业版License(DBdoctor全部功能免费使用一年+纳管10个实例+免费MySQL专家服务),现在进群可优先获得哦~

微信图片_20240509165943.jpg
微信图片_20240509165957.jpg
微信图片_20240509170002.jpg

建议您在PC端打开,体验更佳~

1️⃣ 下载地址:

https://www.hisensecloud.com/h-col-126.html?statId=22

2️⃣ 在线试用:

https://dbdoctor1.hisensecloud.com

(关注公众号,点击在线试用获取试用环境专属账号密码)

3️⃣ 如何部署:

http://hisensecloud.com/h-col-133.html

相关实践学习
跟我学:如何一键安装部署 PolarDB-X
《PolarDB-X 动手实践》系列第一期,体验如何一键安装部署 PolarDB-X。
相关文章
|
1天前
|
SQL Oracle 关系型数据库
一些SQL数据库工具的介绍
【5月更文挑战第19天】一些SQL数据库工具的介绍
14 4
|
3天前
|
缓存 关系型数据库 MySQL
如何优化MySQL数据库查询性能
MySQL是一款常用的关系型数据库,但在实际使用过程中,由于数据量增加和查询操作复杂度增加,会导致查询性能下降。本文将介绍一些优化MySQL数据库查询性能的方法。
|
5天前
|
存储 Cloud Native 关系型数据库
PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
【5月更文挑战第14天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
41 2
|
5天前
|
SQL 缓存 大数据
优化数据库性能的五大策略
传统的数据库性能优化常常集中在SQL查询优化和索引设计上,然而,在当今大数据时代,优化数据库性能需要综合考虑更多因素。本文将介绍五大策略,从硬件资源利用、数据模型设计、查询优化、缓存策略到数据库配置调整,为您提供全面的数据库性能优化方案。
|
5天前
|
关系型数据库 分布式数据库 数据库
关系型数据库性能需求
【5月更文挑战第7天】关系型数据库性能需求
23 5
关系型数据库性能需求
|
5天前
|
Cloud Native 关系型数据库 分布式数据库
数据库性能诊断工具DBdoctor通过阿里云PolarDB产品生态集成认证
DBdoctor(V3.1.0)成功通过阿里云PolarDB分布式版(V2.3)集成认证,展现优秀兼容性和稳定性。此工具是聚好看科技的内核级数据库性能诊断产品,运用eBPF技术诊断SQL执行,提供智能巡检、根因分析和优化建议。最新版V3.1.1增加了对PolarDB-X和OceanBase的支持,以及基于cost的索引诊断功能。PolarDB-X是阿里巴巴的高性能云原生分布式数据库,兼容MySQL生态。用户可通过提供的下载地址、在线试用链接和部署指南体验DBdoctor。
153 0
|
3天前
|
关系型数据库 MySQL API
实时计算 Flink版产品使用合集之可以通过mysql-cdc动态监听MySQL数据库的数据变动吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
20 0
|
5天前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
25 0
|
5天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(下)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
18 0
|
5天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(上)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
23 0

热门文章

最新文章