暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

DBDoctor 数据库性能洞察体验报告

原创 virvle 2024-09-03
123

DBDoctor 数据库性能洞察,如命名所描述的,可以帮助DBAer去快速的了解当前数据库的状况。
一份巡检报告,可以快速的了解数据库的健康情况,可以对应进行深入优化

image.png

1. 环境配置

服务器 OS 内核 内存CPU 数据盘 IP
server centos 7.8 3.10.0-1127.el7.x86_64 8H32G 100G 10.0.0.236
agent centos 7.8 3.10.0-1160.83.1.el7.x86_64 8H16G 100G 10.0.0.140

2. DBDoctor下载安装(V3.2.3 版本)

下载网址:https://www.dbdoctor.cn/h-col-133.html
安装包有点大1.5G,比上个版本小了几百M,看大家网速,我这下了3分钟不到

2.1 解压安装

步骤很简单,入门门槛比较低

tar -zxvf DBdoctorV3.2.3_20240820_x86.tar.gz -C /data/
cd /data/dbdoctor-3.2.3.0
./dbd -I

2.2 提示:若未安装kernel-devel,安装的过程中会遇到报错,不安装部分功能(如审计日志,锁分析等)无法使用

45fc13cdf2af5092b08ffc0f19503ec.png

b739f6c3d3577d0d311017485d4e383.png

image.png

[root@dba236 ~]# yum install perl

[root@dba236 ~]# rpm -ivh kernel-devel-3.10.0-1127.el7.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:kernel-devel-3.10.0-1127.el7     ################################# [100%]

2.3 重启dbdoctor

./dbd --restart all

image.png

重启后,出现访问网址及登录账密,admin的虽然简单点,但第一次登录就会要求进行更改,问题不大。

PS: 若是需要升级版本,参考文档:
https://demo.dbdoctor.cn/modules/dbDoctor/mdPreview/index.html?readme=help#/mdManageDocument/6.2-Upgrade
原地升级后,登录网站的账号密码不变

3. 纳管ORACLE非CDC实例

3.1 用户权限分配

GRANT SELECT_CATALOG_ROLE TO USERNAME;
GRANT EXECUTE ON DBMS_WORKLOAD_REPOSITORY TO USERNAME;
GRANT CREATE SESSION TO USERNAME;

若要支持sql审核,需要增加权限

- 赋予此用户在自己模式下的增删改查权限
ALTER USER USERNAME quota SPACE_MB on users;
GRANT CREATE TABLE TO USERNAME;

-- 赋予用户在其他模式的表操作权限,这里由于涉及的表较多,直接给了any的权限,也导致update sql审核不了原因,看后续)
--GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA.TABLE_NAME TO USERNAME;
GRANT select any table TO USERNAME;

3.2 agent安装部署(当前采取手动安装):

参考文档:
https://demo.dbdoctor.cn/modules/dbDoctor/mdPreview/index.html?readme=help#/mdManageDocument/7.3.1-Agent-data-collection

3.3 下载及解压安装包

PS: 因同名,若有旧版本,须先卸载旧版本

cd /data
wget http://10.0.0.236:13000/download/agent.tar.gz&&tar -zxvf agent.tar.gz&&cd agent&&./agent --install -h undefined -k 10.0.0.236:9092 -s 10.0.0.236:13000

tar xvf agent.tar.gz

cd agent
./agent --install -h 10.0.0.140 -k 10.0.0.236:9092 -s 10.0.0.236:13000

3.4 安装完成后server纳管不上,检查如下情况

(1)agent与server的时钟需要同步,时差不能超过5s
也可以通过在agent执行命令进行确认,返回true 正常,返回false是有问题的

 curl  -m 2 "http://{server端IP}:13000/timeCheck?timeStampSec=$(date +%s)" 您在安装agent失败的机器上执行这个命令,把Server端IP换成您实际的IP

(2)agent的端口需要开放给server
也可以通过在agent执行命令进行确认

chroot /mnt/agent curl  -m 2 "http://{server端IP}:13000/timeCheck?timeStampSec=$(date +%s)" 您再试下这个命令

不然会出现报错:

ee1e6b0eee6855388584204b789ef03.png
(3)## 操作系统版本支持:kernel too old

2ca0466967d546aff7b373b84bb6db4.png

image.png

4. SQL审核

PS:权限要给够,不然就会遇到后面问题排查遇到问题

在人工审核:必须选择对应的用户,页面很清晰,审核sql基本在5秒内,当然,若是存在权限问题,那就会出现超时的情况

image.png

可以一次审核多条(以分号“;”分割),在任务详情里面,按条进行分别列出

1724218847972.jpg

image.png

5. 问题排查

5.1 存储分析页面空白问题处理

5.1.1 排查agent的数据采集是否开启

打开【实例列表】,点击相应实例的纳管信息,查看一下数据采集方式,查看已开启

e34d9124fc113c5d2fb893cc87f12fb.png

5.1.2 排查dbd各个组件的状态

cd /data/dbdoctor-3.2.3.0
./dbd --status

image.png

5.1.3 查看dbd的日志

cd /data/dbdoctor-3.2.3.0
./dbd --logs

[root@dba236 dbdoctor-3.2.3.0]#  ./dbd --logs
2024-08-20 13:20:33.508899822 [INFO] [dbd]: Command Tool Version 3.2.3.0,Handler Command: logs
2024-08-20 13:20:33.522783082 [INFO] [dbd]: collecting logs, wait a moment......
2024-08-20 13:20:39.927744940 [INFO] [dbd]: dbd service is installed,collecting agent log
2024-08-20 13:20:40.010670623 [INFO] [dbd]: login in success,collecting agent log
2024-08-20 13:20:40.095793415 [INFO] [dbd]: agent num is 2
2024-08-20 13:20:54.930405487 [INFO] [dbd]: collect logs complete,package name is /data/dbdoctor-3.2.2/dbd_log_20240820132043.tar.gz

执行完成后,会生产一个压缩包文件及存放位置,里面包含了丰富的日志

5.1.4 开启agent端口

PS: 经排查日志,发现agent的端口为开放
在dbd的server服务器执行

# dbd服务器执行
[root@dba236 dbdoctor-3.2.3.0]#  curl http://10.0.0.140:22888/health
curl: (7) Failed connect to 10.0.0.140:22888; No route to host

[root@dba236 dbdoctor-3.2.3.0]# curl http://10.0.0.140:22888/health
curl: (7) Failed connect to 10.0.0.140:22888; No route to host
[root@dba236 dbdoctor-3.2.2]# telnet 10.0.0.140 22888

# agent 服务器,开放端口22888
[root@easdbtest140 ~]#  firewall-cmd --list-ports|grep 22888
[root@easdbtest140 ~]# 
[root@easdbtest140 ~]# firewall-cmd --add-port=22888/tcp --permanent           
success
[root@easdbtest140 ~]# firewall-cmd --reload                            
success

再次查看页面,已经能够正常获取数据

image.png

5.2 update解析异常

image.png

任务详情

image.png

授权update权限

grant update on t1 to username;

再次查,可以正常审核
image.png

image.png
PS:终于知道,最初为啥用户授权的时候需要给update insert delete 权限

5.3 实例巡检报错

image.png

与权限有关,需要授权

GRANT EXECUTE ON DBMS_WORKLOAD_REPOSITORY TO username;

6. 系统建议

6.1.慢SQL建议增加执行时长

PS:当然也可以通过右上角的“审核配置”进行筛选
1724222850666.jpg

6.2根因分析建议

d7dad462a5d895d6d20432b40c9257b.png

根因分析,建议加上执行SQL的用户(多用户下比较好去定位谁的问题),若是可以的话,也可以加上来源(HOST-IP或者hostname)
特别是要爆库的时候,可以快速定位哪个应用的问题,实在不行的情况下可以先关了应用,防止数据库宕机

6.3 sql审核提示解析错误,提示表不存在

update t2 set  t2.name='Haha' where id =1 

1724223589356.jpg

尝试解决:解除纳管,重新纳管进去,依然解析不通过
最后解决办法:用户所给的权限不够,增加

GRANT select any table TO username;

6.4 巡检项设置

可开启用户密码快过期用户等等提示
切换到admin用户,进入【巡检管理】选择相应的数据库进行配置:
鉴于安全要求,要求用户每半年进行一次密码修改,可开启“数据库用户密码10天内过期检查”

希望巡检报告,可以增加时间段的选择,比如发现CPU爆满是在早上的10-11点间,那么巡检报告就出这段时间的,得出的结果会更加精确一些。当然,也可以下载相应的AWR报告。终究没有那么的直观

6.5 表空间使用率评估

PS: 巡检报告中,针对表空间使用率评估,若存在自动扩展的,评估不够准确
image.png

image.png

可参照文章:https://www.modb.pro/db/484004

6.6 慢SQL显示的SQL语句不全

image.png

SQL语句不全,可能是此原因导致解析以一次异常.

到此,所有功能都可以正常投入使用,获益很多
比如某天,用户说系统卡卡卡,打开DBDoctor一看,发现是某个时间在跑一个大事务导致;
每天的巡检,也可以直接查看巡检报告;
卡性能的点的SQL可以通过根因分析,找到“罪魁祸首”

最后,非常感谢DBDoctor各位老师在测试过程中的全力支持。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论