大家好,我是霸王龙的日常,目前从事于通信行业,10年+DBA工作经验。近期在交流群里了解到DBDoctor,并对其强大的数据库管理和优化功能产生了浓厚的兴趣,借此机会体验一下。我重点关注的数据库工具及功能:性能分析、SQL审核、参数调优、锁分析等功能。
1 产品简介
DBdoctor是一款内核级数据库性能诊断软件,致力于解决数据库的一切性能问题。
就像对数据库做全身CT,帮助您一分钟内找到数据库性能问题,实现数据库性能诊断百倍提效。
针对数据库性诊断门槛高、耗时长的问题,DBdoctor提供了快速易用的解决方案,基于海量数据实时分析技术,深入到数据库内核,提供精准的诊断分析和优化建议。
2 DBDoctor部署
下载地址:https://dbdoctor.hisensecloud.com/col.jsp?id=126
DBdoctor支持安装包解压一键安装与docker镜像手动导入安装镜像手动导入安装)两种模式。
其中,安装包解压一键安装模式目前仅支持Linux系统;Docker镜像手动导入安装模式支持Linux和Mac系统。
我使用的是安装包解压一键安装模式,安装包1.73GB,下载大约用了5分钟,官方把好多依赖项集成到了安装包,不必再为安装前的预置环境而搞得焦头烂额,安装是真香,一条命令搞定。
2.1 部署环境
- KylinV10 x86_64
- DBdoctorV3.2.2
2.2 安装包解压一键安装
将下载的tar.gz安装包解压缩,进入解压后的根目录,执行./dbd -I
进行DBdoctor零依赖快速安装。
[root@trex ~]# tar -zxvf DBdoctorV3.2.2_20240702_x86.tar.gz -C /opt
[root@trex ~]# cd /opt/dbdoctor-3.2.2
[root@trex dbdoctor-3.2.2]# ./dbd -I
显示结果如下:
2024-07-29 15:36:23.706210448 [INFO] [dbd]: Command Tool Version 3.2.2,Handler Command: install
2024-07-29 15:36:23.725783313 [INFO] [dbd]: current_path available_space is 454GB, is valid, to do next~
2024-07-29 15:36:23.730411437 [INFO] [dbd]: stand-alone mode,all service will install in one host
2024-07-29 15:36:23.951600339 [INFO] [dbd]: HOST_IP: 172.16.7.189
2024-07-29 15:36:23.957358919 [INFO] [dbd]: AGENT port: 22888
2024-07-29 15:36:23.965161894 [INFO] [dbd]: SAMPLE_PORT port: 8080
2024-07-29 15:36:23.972561511 [INFO] [dbd]: PI_PORT port: 13000
2024-07-29 15:36:23.991000387 [INFO] [dbd]: ALGO_PORT port: 8999
2024-07-29 15:36:23.998229352 [INFO] [dbd]: COST_PORT port: 3606
2024-07-29 15:36:24.006239814 [INFO] [dbd]: COST57_PORT port: 3706
2024-07-29 15:36:24.013952795 [INFO] [dbd]: COST_PG11_PORT port: 5532
2024-07-29 15:36:24.021594652 [INFO] [dbd]: COST_PG14_PORT port: 5632
2024-07-29 15:36:24.028902876 [INFO] [dbd]: UNITE_PORT port: 15010
2024-07-29 15:36:24.036789763 [INFO] [dbd]: KAFKA_NODE_PORT port: 9092
2024-07-29 15:36:24.045118536 [INFO] [dbd]: KAFKA_CONTROLLER_PORT port: 19093
2024-07-29 15:36:24.053253251 [INFO] [dbd]: port 3306 is already use
2024-07-29 15:36:24.060466700 [INFO] [dbd]: MYSQL_NODE_PORT port: 3307
2024-07-29 15:36:24.229487900 [INFO] [dbd]: creating agent package, wait a moment......
2024-07-29 15:36:24.909686343 [INFO] [dbd]: stand-alone mode starting......
✔ mysql start
✔ kafka start
✔ dra-algo-ml start
✔ dra-pi start
✔ dra-data-sample start
✔ dra-cost start
✔ dra-cost57 start
✔ dra-cost-pg11 start
✔ dra-cost-pg14 start
✔ dra-unite start
✔ dra-agent start
┌───────────────────────────────────────────────────────────────────────────────┐
│ ____ ____ ____ ___ ____ _____ ___ ____ │
│ | _ \ | __ ) | _ \ / _ \ / ___||_ _|/ _ \ | _ \ │
│ | | | || _ \ | | | || | | || | | | | | | || |_) | │
│ | |_| || |_) || |_| || |_| || |___ | | | |_| || _ < │
│ |____/ |____/ |____/ \___/ \____| |_| \___/ |_| \_\ │
│ │
│ WebSite: http://172.16.7.189: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. │
└───────────────────────────────────────────────────────────────────────────────┘
2024-07-29 15:36:54.805283726 [INFO] [dbd]: add and set demo, wait a moment......
✔ add demo instance success
✔ set demo instance success
✔ waiting demo instance agent running success
✔ open lock button success
[root@trex dbdoctor-3.2.2]#
根据提示进入网址:
http://172.16.7.189:13000/#/login
初始化生成两个用户,DBA 用户 和 Admin 用户。
日常管理用DBA用户即可,如果要设置系统配置,请使用Admin 用户登录。
打开网址,这里使用DBA 用户登录,默认用户是tester
和密码Root2023!
进入主页,默认自带了一个demo实例库用来演示。
纳管新实例
支持主流的数据库,比如oracle、mysql、postgresql、oceanbase、dm等
这里以mysql为例
根据提示填写数据库信息,并进行连通性检查:
数据库采集部分,填写服务器信息,连通性检查结果如下:
最后,点击提交按钮。
查了实例列表。
下图中,我解除了自带的demo演示实例,仅保留实际使用的实例。
3 使用基础功能
3.1 实例的概览
点击tab页“Dashboard”,可以查看到当前租户项目下所有数据库实例的概览。
3.2 性能异常问题和根因SQL数量分布
3.3 实例诊断
在“trexdb"实例的最右侧点击“实例诊断”,可以跳转到该实例的诊断页面。
在实例的诊断页面,可以使用实例巡检、基础监控、存储分析等长期免费功能。
3.3.1 事前诊断
-
SQL审核:
输入相应的SQL,点击审核,DBdoctor会自动分析,并给出结论。
查看审核详情,能够给出看具体的建议。
这里的显示信息,我觉得也可以优化下,审核结果显示的是未通过
。但是性能审核和规范审核都显示通过
,优化建议部分却没有内容显示。 -
实例巡检
查看巡检报告
下面会列出一些数据库的配置优化项,根据提示处理即可。
这个功能不错,很实用。但细节地方我觉得可以优化下,比如修复建议里提示调整open_table_cache大小,但实际参数应该table_open_cache 。还有巡检结果为异常
,风险等级显示警告
。巡检结果为通过
,风险等级也显示警告
,有点迷惑。
3.3.2 实时诊断
性能洞察、锁透视、根因诊断等功能
3.3.3 实例调优
- 索引调优
- 存储分析
4 总结
总体来说,DBDoctor的表现相当出色。我在测试环境中导入了一些代表日常操作的SQL脚本,包括复杂的查询和事务处理。然后使用DBDoctor的SQL审核功能对这些脚本进行了审查。该功能能够自动检测潜在的性能瓶颈,并提出改进建议。此外,包括基础监控和数据库环境参数方面也给处理详尽的优化建议,为日常开发和运维提供了相当大的帮助。