TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 协议和 MySQL 生态等重要特性。
了解更多:「合集」三年50篇,TiDB干货全收录
DBdoctor 简介
DBdoctor 是一款内核级数据库性能诊断软件。针对数据库性能诊断门槛高、耗时长的问题,提供快速易用的解决方案,深入到数据库内核,实时海量数据分析,提供精准的诊断分析和优化建议。
DBdoctor 提供的服务主要有:SQL审核、实例巡检、性能洞察、锁透视、根因诊断、审计日志、基础监控、索引推荐、存储分析、参数推荐、Dashboard大盘等。
目前,DBdoctor 支持纳管的数据库有:
- MySQL
- PostgreSQL
- Oracle
- MariaDB
- TDSQL
- DM8
- AntDB
- GoldenDB
- OceanBase (DBdoctor v3.1.1)
- PolarDB-X (DBdoctor v3.1.1)
- Highgo (DBdoctor v3.2.1)
- Kingbase (DBdoctor v3.2.1)
- SQL Server (DBdoctor v3.2.2)
- Vastbase (DBdoctor v3.2.2)
- GBase 8a (DBdoctor v3.2.3)
- TiDB (DBdoctor v3.2.4)
DBdoctor 本地部署
这里简单介绍如何在本地部署 DBdoctor 单机版,以快速体验其特性。
访问 DBdoctor 官网 https://www.dbdoctor.cn/product/11,点击免费下载。
当前最新版本为 10 月 15 日发布的 DBdoctor v3.2.4。
DBdoctor 3.2.4 版本支持PostgreSQL(12/13/14)无符号表场景下开启锁分析。利用AI和DBA的丰富经验,推荐出最佳参数设置,并提供性能提升的具体比例。支持OceanBase、SQL Server的审计日志功能和MySQL、PostgreSql、Oracle、SQL Server在无审计日志场景下的锁分析功能。新增对TiDB数据库的纳管支持,并优化OceanBase的纳管过程,支持系统/用户租户维度的纳管操作。
解压缩安装包,进入解压后的根目录,执行 ./dbd -I
进行 DBdoctor 零依赖快速安装。
tar zxf DBdoctorV3.2.4_20241015_x86.tar.gz
cd dbdoctor-3.2.4.1/
sudo ./dbd -I
安装成功后会打印访问地址:
┌───────────────────────────────────────────────────────────────────────────────┐
│ ____ ____ ____ ___ ____ _____ ___ ____ │
│ | _ \ | __ ) | _ \ / _ \ / ___||_ _|/ _ \ | _ \ │
│ | | | || _ \ | | | || | | || | | | | | | || |_) | │
│ | |_| || |_) || |_| || |_| || |___ | | | |_| || _ < │
│ |____/ |____/ |____/ \___/ \____| |_| \___/ |_| \_\ │
│ │
│ WebSite: http://192.168.43.90:13000/#/login │
│ DBA User: tester │
│ DBA Password: Root2023! │
│ If you want to set system config,please use admin user to login in. │
│ Admin User: admin │
│ Admin Password: 123456 │
│ If you changed the default password, please login in with the new password. │
└───────────────────────────────────────────────────────────────────────────────┘
登录网站可以看到 DBdoctor 会默认启动一个 Demo 实例(MySQL),便于快速体验。
你也可通过 DBdoctor 微信公众号申请在线试用账号。
DBdoctor 在线试用环境地址:https://demo.dbdoctor.cn
DBdoctor 两步纳管 TiDB
DBdoctor v3.2.4 版本新增了对 TiDB 数据库的支持:支持 TiDB 的 SQL 审核、实例巡检、性能分析、根因诊断、基础监控功能。
DBdoctor 通过连接 TiDB Server 节点来统一管理 TiDB 数据库,并自动检测所有 TiDB Server 节点。为了简化部署和维护,每个 TiDB Server 节点的主机只需部署一个 Agent(可自动部署),即可实现对整个集群的监控和管理。
- 在 TiDB 中创建访问账号
[shawnyan@tidb7 ~]$ tidb
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 1241513994
Server version: 8.0.11-TiDB-v7.5.3 TiDB Server (Apache License 2.0) Community Edition, MySQL 8.0 compatible
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> CREATE user 'test' IDENTIFIED BY 'Root2023!';
Query OK, 0 rows affected (0.032 sec)
MySQL [(none)]> GRANT SELECT, PROCESS, SHOW VIEW ON *.* TO 'test';
Query OK, 0 rows affected (0.020 sec)
MySQL [(none)]> \q
Bye
- 在 DBdoctor 页面纳管 TiDB 集群
点击【实例列表】>>【实例纳管】,在【类型】下拉框中选中【tidb】引擎类型;填写TiDB数据库的访问地址、账号以及密码等基本信息;点击【check】按钮,检查实例数据库是否连接正常,检查通过则会在纳管界面展示所有节点信息;录入 TiDB server 所在主机的账号信息,默认自动安装 Agent,也可手动安装,DBdoctor 提示了安装命令,一键复制后,在目标机执行即可。连通性检测通过后,点击提交后即可成功纳管 TiDB 数据库。
DBdoctor 采集 TiDB 指标
DBdoctor 支持采集主机实例的相关资源性能数据、锁以及审核日志,用于洞察引起CPU异常、IO异常等性能问题根因SQL。
目前有三种采集方式:Agent 采集方式;Prometheus 采集方式;无 Agent 采集方式。
不过当前版本尚不支持 Prometheus 采集方式,推荐使用 Agent 采集方式。
DBdoctor 支持 TiDB 的 SQL 审核、实例巡检、性能洞察、根因诊断、基础监控功能。
- SQL 审核:支持人工审核、慢SQL审核、全量SQL审核以及OpenAPI审核方式,可实现对增量SQL以及线上SQL的全生命周期闭环质量管理。支持批量上传SQL文件,在开发阶段即可完成SQL审核,提前识别SQL问题,同时针对线上存量SQL也可以实时抓取进行审核。
- 深度巡检与报表:支持自动巡检及手动巡检两种巡检方式,可以及时发现数据库在配置、性能、资源等方面的问题,保证数据库服务的稳定。
- 性能洞察:性能洞察界面中展示各资源使用率、业务流量以及数据库的平均活跃会话情况。基于数学模型精准定位,自动框选异常时间区间并提示根因SQL,单条SQL资源可量化,把资源消耗映射为颜色面积,直观定位数据库性能问题并给出优化建议。
- 根因诊断:可直观汇总展示实例中存在性能问题的所有SQL,点击单个SQL会展示异常问题现象、详细的根因推导过程,并给出最佳优化建议。
- 基础监控:通过基础监控,可以实时查看该数据库中关于数据库与主机资源、内存、表文件、不同类型请求和事件耗时情况相关的监控指标。
更多信息参考:DBdoctor快速纳管TiDB数据库
基础监控
下面详细列出【基础监控】的【TiDB OPS】和【TiDB Duration】统计指标,以供参考。
- TiDB OPS 请求分析统计监控项
- Failed Query / 每秒错误请求数:每个 TiDB 实例上,每秒钟执行 SQL 语句发生错误按照错误类型的统计(例如语法错误、主键冲突等)
- TPS / 每秒事务数:每秒事务执行数量统计
- KV Cmd OPS / 每秒 KV 命令数:KV 命令执行数量统计
- TiClient Region Error OPS / 每秒 TiKV 返回 Region 相关错误信息的数量:TiKV 返回 Region 相关错误信息的数量
- Lock Resolve OPS / 每秒 TiDB 清理锁操作的数量:TiDB 清理锁操作的数量。当 TiDB 的读写请求遇到锁时,会尝试进行锁清理
- TiDB Duration 各类事件耗时情况统计
- 客户端网络请求发送到 TiDB,到 TiDB 执行结束后返回给客户端的时间。一般情况下,客户端请求都是以 SQL 语句的形式发送,但也可以包含 COM_PING、COM_SLEEP、COM_STMT_FETCH、COM_SEND_LONG_DATA 之类的命令执行的时间
- 由于 TiDB 支持 Multi-Query,因此,可以接受客户端一次性发送的多条 SQL 语句,如:select 1; select 1; select 1;。此时,统计的执行时间是所有 SQL 执行完之后的总时间
- Duration / 平均耗时:执行的时间
- Transaction Duration / 事务平均耗时:事务执行的时间
- KV Cmd Duration / 平均 KV 命令耗时:KV 命令执行的时间
- PD TSO Wait Duration / TiDB 等待从 PD 获取 TS 的平均耗时:TiDB 等待从 PD 获取 TS 的时间
- Load Schema Duration / TiDB 从 TiKV 获取 Schema 的平均耗时:TiDB 从 TiKV 获取 Schema 的时间
- KV Backoff OPS / 每秒 TiKV 返回错误信息的数量:TiKV 返回错误信息的数量
- Slow Query Duration / 慢查询的平均耗时:慢查询的处理时间(整个慢查询耗时、Coprocessor 耗时、Coprocessor 调度等待时间),慢查询分为 internal 和 general SQL 语句
- Connection Idle Duration / 空闲连接的平均持续时间:空闲连接的持续时间
- Parse Duration / SQL 语句解析平均耗时:SQL 语句解析耗时统计
- Compile Duration / SQL AST 编译成执行计划的平均耗时:将解析后的 SQL AST 编译成执行计划的耗时
- Execution Duration / 执行 SQL 语句执行计划平均耗时:执行 SQL 语句执行计划耗时
感谢DBdoctor小助手和胡xf老师的技术支持👍🏻
Have a nice day ~
🌻 往期精彩 ▼
- 国产基础软件“出海”标杆炼成记
- 几张图带你了解 TiDB 架构演进
- 星辰资讯:TiDB v8.1.0 发版!稳!
- 敢于公布BUG的国产数据库才是好数据库
- 一文带你了解 GB 18030-2022 字符集
-- / END / --
👉 这里可以找到我
- 微信公众号:少安事务所
- ITPUB:@少安事务所
- TiDB 专栏:@ShawnYan
👉 这里有得聊
如果对国产基础软件(操作系统、数据库、中间件)感兴趣,可以加群一起聊聊。
如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!ღ( ´・ᴗ・` )~