开发者社区> lucyne> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

MySQL 的实时性能监控利器

简介:
+关注继续查看

操作系统及MySQL数据库的实时性能状态数据尤为重要,特别是在有性能抖动的时候,这些实时的性能数据可以快速帮助你定位系统或MySQL数据库的性能瓶颈,就像你在Linux系统上使用「top,sar,iostat」等命令工具一样,可以立刻定位OS的性能瓶颈是在IO还是CPU上,所以收集/展示这些性能数据就更为重要,那都有哪些重要的实时性能状态指标可以反应出系统和MySQL数据库的性能负载呢?

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

目前在Linux跑MySQL是大多数互联网公司的标配,以上图片的性能数据指标项是我认为在Linux,MySQL,InnoDB中较为重要的实时状态数据,然而在以上图片Doing一栏其实更为重要,之所以把它叫做Doing,是因为「processlist,engine innodb status,locks」等指标项才真正反映了MySQL此时正在做什么。

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

我们来对标Oracle数据库看一下,在Oracle数据库中提供了「AWR,ASH,SQL Monitor」等众多诊断工具,可以一眼望穿数据库正在做什么,甚至都可以知道在过去30天内任何一个时间区间的性能负载和当时数据库正在做什么。

在MySQL中虽然有像「zabbix,PMM」等优秀的监控工具,但它们只能反映数据库历史的一些性能数据曲线,例如,TPS高了,临时表使用多了,有InnoDB Deadlocks,但对于MySQL当时的Doing,我只能说不够直接。如果你在现场,你可以抓到MySQL正在做什么,但是,你总有不在现场的时候,如果问你昨天晚上数据库的性能抖动是什么原因?怎样快速重现现场找到引起抖动的原因呢?

答案是可以使用「doDBA tools」,这是一款免费的基于控制台监控工具。

doDBA tools是什么

doDBA tools是一个基于控制台的远程监控工具,它不需要在本地/远程系统上安装任何软件,它可以实时收集操作系统、MySQL、InnoDB的实时性能状态数据,并可以生成Doing日志文件,来帮助你快速了解/优化系统及MySQL数据库。

特点

  • 基于golang语言开发

  • 可收集Linux、MySQL相关性能数据

  • 可本地或远程收集,可多台

  • mytop --Like Linux TOP

  • 基于并发生成Doing日志,复现现场

  • 可记录到日志文件

doDBA tools 工作原理


远程收集系统信息是通过ssh(用户名密码或建立信任)的方式连接到远程服务器上收集,收集的方法都是通过读取Linux的proc下的等meminfo,diskstats,uptime,net,vmstat ,cpuinfo ,loadavg等文件,这和pmm,zabbix收集方式一致。


远程收集MySQL信息是通过 MySQL tcp连接到MySQL数据库上收集,只需要授予连接用户PROCESS、SELECT权限即可。


系统信息和MySQL信息的收集可以分离,如果只想收集系统信息,只需要提供系统用户名密码即可,如果只收集MySQL可以只提供MySQL连接信息,如果是rds用户,可以使用-rds参数,在使用mytop时会自动忽略系统信息的收集。

如何使用

Github主页:
https://github.com/dblucyne/dodba_tools
Download:
wget https://raw.githubusercontent.com/dblucyne/dodba_tools/master/doDBA --no-check-certificate
wget https://raw.githubusercontent.com/dblucyne/dodba_tools/master/doDBA.conf --no-check-certificate
chmod +x doDBA
下载下来就可以直接使用,不依赖于任何环境。
使用帮助:
./doDBA -help
  -c string
    configuration file.(default "doDBA.conf")
  -h string
    Connect to host/IP.
  -sys
    Print linux info.
  -myall
    Print linux and mysql info.
  -mysql
    Print mysql info.
  -innodb
    Print innodb info.
  -mytop
    Print mysql prcesslist,like top.
  -i duration
    refresh interval in seconds.(1s)
  -t int
    doing on Threads_running.(50)  
 -rds        
   Ignore system info.
 -log    Print to file by day.  -nocolor    Print to nocolor.

使用实例

1. 收集Linux性能数据
./doDBA -h=10.1.x.xx -sys

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

2. 收集MySQL性能数据

./doDBA -h=10.1.x.xx -mysql

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

3. 收集InnoDB性能数据
./doDBA -h=10.1.x.xx -innodb

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

4. 收集MySQL及Linux性能数据
./doDBA -h=10.1.x.xx -myall

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

5. mytop --like linux top
./doDBA -h=10.1.x.xx -mytop

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

6. 借助Shell收集多台
cat ip.txt
10.1.x.x1
10.1.x.x2
Shell
cat ip.txt | while read ip; 
 do 
 echo $ip;
 ./doDBA -h=$ip -mysql -log </dev/null & 
 done
7. 收集到日志文件
./doDBA -h=10.1.x.xx -mysql -log

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

8. 开启Doing功能

使用【-t】参数可以基于Threads_running的数量设置阈值,设置后可记录「processlist,engine innodb status」信息到dodba.log日志中,--复现现场。

./doDBA -h=10.1.x.xx -myall -t=3

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

9. 查看Doing日志
tail -f dodba.log

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=





如果你对golang感兴趣,如果你对doDBA tools有问题或者建议,扫描二维码,可联系作者。 


640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MySQL性能监控(sql命令语句 & MONyog工具)全掌握,这一篇足以!
MySQL性能监控(sql命令语句 & MONyog工具)全掌握,这一篇足以!
0 0
180601-MySql性能监控工具MyTop
180601-MySql性能监控工具MyTop
0 0
MySQL 性能监控4大指标——第二部分
本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的4大指标。 第一部分介绍了前两个指标:查询吞吐量与查询执行性能。本文将继续介绍另两个指标:MySQL 连接与缓冲池。文章系国内 ITOM 管理平台 OneAPM 编译呈现。
2421 0
MySQL 性能监控4大指标——第一部分
本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的4大指标。 第一部分将详细介绍前两个指标: 查询吞吐量与查询执行性能。文章系国内 ITOM 管理平台 OneAPM 编译呈现。
2553 0
mysql性能监控指标及分析
1.系统mysql的进程数 ps -ef | grep "mysql" | grep -v "grep" | wc –l 2.Slave_running mysql > show status like 'Slave_running'; 如果系统有一个从复***务器,这个值指明了从服务器的健康度 3.Threads_connected mysql > show status like 'Threads_connected'; 当前客户端已连接的数量。
643 0
软件测试|MySQL安装最全教程
软件测试|MySQL安装最全教程
0 0
MySQL安装教程-手把手教你安装
MySQL安装教程-手把手教你安装
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
让 MySQL 原生分布式触手可及
立即下载
好的 MySQL 兼容可以做到什么程度
立即下载
云数据库RDS MySQL从入门到高阶
立即下载