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

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

我们来对标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 stringconfiguration file.(default "doDBA.conf")-h stringConnect to host/IP.-sysPrint linux info.-myallPrint linux and mysql info.-mysqlPrint mysql info.-innodbPrint innodb info.-mytopPrint mysql prcesslist,like top.-i durationrefresh interval in seconds.(1s)-t intdoing on Threads_running.(50)  -rds        Ignore system info.-logPrint to file by day.-nocolorPrint to nocolor.

使用实例

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

2. 收集MySQL性能数据

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

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

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

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

6. 借助Shell收集多台
cat ip.txt
10.1.x.x110.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

8. 开启Doing功能

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

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

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


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

MySQL 的实时性能监控利器相关推荐

  1. .NetCore使用skywalking实现实时性能监控

    一.简介 很久之前写了一篇 <.Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控>关于NetCore性能监控的文章,使用Inf ...

  2. ASP.NET Core之跨平台的实时性能监控(2.健康检查)

    前言 上篇我们讲了<如何使用App Metrics 做一个简单的APM监控>,最后提到过健康检查这个东西. 这篇主要就是讲解健康检查的内容. 没看过上篇的,请移步:ASP.NET Core ...

  3. C++ 后台程序实时性能监控

    面对的问题: 做后台程序经常会被问一句话,你的程序能撑多少人.一般官方一点的回答是这个得根据实际情况而定.实际上后台程序的性能是可以被量化的.我们开发的每一个服务器程序,对性能都非常有底,以为我们有数 ...

  4. 谷歌测试工程师分享前端性能监控利器Performance

    最近在写一个监控脚本,终于有机会接触到了这一块,整理后写下了本文. Performance是一个做前端性能监控离不开的API,最好在页面完全加载完成之后再使用,因为很多值必须在页面完全加载之后才能得到 ...

  5. Performance — 前端性能监控利器

    2019独角兽企业重金招聘Python工程师标准>>> 最近在写一个监控脚本,终于有机会接触到了这一块,整理后写下了本文. Performance是一个做前端性能监控离不开的API, ...

  6. .Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控

    一.简介 最近这段时间一直在忙,没时间写博客,负责了一个项目,从前端到后端一直忙,同时还有其他第几个项目的系统架构要处理. 去年就开始关注net core了,只是平时写写demo,没用在项目中,正好这 ...

  7. ASP.NET Core之跨平台的实时性能监控

    前言 前面我们聊了一下一个应用程序 应该监控的8个关键位置. 应用程序的8个关键性能指标以及测量方法 最后卖了个小关子,是关于如何监控ASP.NET Core的. 今天我们就来讲讲如何监控它,下面上效 ...

  8. Performance_js中计算网站性能监控利器

    Perform作为前端工程师,无论是业务需要还是我们对于自己开发的Web站点的要求,往往都有性能监测以及数据上报的需求.而Performance API除了简单易用对前端工程师极其友好的特点之外,还有 ...

  9. 专访刘刚:360手机卫士的性能监控与优化

    作为一款移动端产品,除了要保证安全性之外,手机卫士还需要考虑尽量减少对手机资源的消耗,而要做到这些,360手机卫士对于自身的性能优化.性能监控,以及对不同产品的适配问题,有哪些改进之处值得我们借鉴呢? ...

最新文章

  1. 跟我学Spring Cloud(Finchley版)-16-Zuul
  2. 什么工作,未来可以走创业路线?
  3. 全球都面临网络安全“人才荒” 院士建议我国高校开“少年班”
  4. springmvc二十:数据绑定
  5. 【数据结构与算法】之深入解析“TinyURL加密与解密”的求解思路与算法示例
  6. POJ 3237 树链剖分学习(树链剖分小结)
  7. 百度地图显示服务器地址,百度地图_根据地图上标记位置获取街道信息,以及经纬度信息...
  8. 设计模式教程(Design Patterns Tutorial)笔记之一 创建型模式(Creational Patterns)...
  9. 关于类微博的timeline的设计思考
  10. Vue中常用的组件传值方式
  11. 猜拳游戏c语言编程,C语言实现的猜拳游戏代码分享
  12. Android 中东阿拉伯语适配,看这一篇够了
  13. LeetCode题解(1818):绝对差值和(Python)
  14. [转]机器视觉代码大全
  15. 求和计算机教案,初中信息技术《Excel求和》教案
  16. micropython是什么意思_介绍 MicroPython 语言
  17. 披上了SSL战甲的HTTP战士——HTTPS
  18. java.awt包_Java中awt包
  19. C++中四种类型转换运算符的使用方法
  20. [游戏]近期期待作品一览

热门文章

  1. mui实现分享功能_MUI 分享功能(微信、QQ 、朋友圈)
  2. 转整型_156.Ruby烘焙大理石豆沙吐司解锁大理石花纹整型
  3. 远控免杀专题11-Avoidz免杀
  4. StringTokenizer将一个字符串分解为单词或者标记
  5. oracle+连接格式,oracle外连接符号(+)的用法
  6. lamp mysql大小限制_LAMP 调优之:MySQL 服务器调优
  7. 【电路原理】学习笔记(0):电路与电路模型
  8. 【计算机系统设计】实践笔记(1)数据通路构建:取指部件分析
  9. 【汇编语言】王爽实验5(5)(6)的解答 建立数据类型匹配的观念
  10. 管道符、重定向与环境变量