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 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

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设置linearlayout最大高度_技术案例 | 排烟口个数与挡烟垂壁高度的关系探讨

随着《建筑防烟排烟系统技术标准》( 以下简称新规范) 的正式实施&#xff0c;新规范对排烟系统的设计提出了完全不同的设计理念。根据新规范正文: 当建筑空间净高不大于6m时&#xff0c;每个防烟分区的排烟量应按不小于60m/(h㎡)计算且不小于15,000m/h( 走道不小于13,000m/h) &…

python安装requests第三方模块

2018-08-28 22:04:51 1 .下载到桌面后解压&#xff0c;放到python的目录下 --------------------------------------------------------------------------------------------------------------------------------------------------------- 2 . 在CMD输入以下 F:\>cd /d F…

集算器协助Java处理结构化文本之条件过滤

直接用Java实现文本文件中数据按条件过滤会有如下的麻烦: 1、文件不是数据库&#xff0c;不能用SQL访问。当过滤条件变化时需要改写代码。如果要实现象SQL那样灵活的条件过滤&#xff0c;则需要自己实现动态表达式解析和求值&#xff0c;编程工作量非常大。 2、文件太大时不能一…

python3动态加载模块的方法实现

2019独角兽企业重金招聘Python工程师标准>>> 需求 我们有时写了一个功能&#xff0c;需要不断地调整&#xff0c;但是已经在线上了&#xff0c;而且在执行任务&#xff0c; 这时要更新上去源文件&#xff0c;而不能结束掉当前进程,怎么办&#xff1f; 所以这时&…

python 浮点数最小值_PYTHON学习笔记(3)——基本数据类型

本次学习原内容均来自MOOC国家精品课程《Python程序语言设计》嵩天第一篇在问题——“今天python了吗&#xff1f;”中基本数据类型1、 整数&#xff08;1&#xff09;整数无限制 pow(x,y) 计算 &#xff08;2&#xff09;四种进制 2、 浮点数类型&#xff08;1&#xff09;取整…

Windows Azure移动终端云服务管理(公测版)

概览 云在远方&#xff0c;管理在您手中。在这个移动为先 云为先的世界&#xff0c;服务不再是基于请求才提供&#xff0c;而是主动来到身边方便您的模式了。我们最近将会陆续推出几大移动端利器帮助您随时随地管理您的云服务。 首批利器之中排名第一当属Azure云助手应用, 它是…

学习opencv3中文版_给视觉组新生的一点学习建议

如果说机械组是把机器人做出来电控组让机器人动起来那么视觉组就是让机器人智能化完成一个合格的机器人三者缺一不可今天就让我们来看看视觉组师兄推荐的学习建议吧&#xff01;1语言基础 野狼队视觉组目前使用的主要语言是C&#xff0c;同时也需要具备一定的C语言基础。建议…

如何动态改变audio的播放的src

如何动态改变audio的播放的src 一、总结 一句话总结&#xff1a;js方式在请求外部网站的时候行&#xff0c;php方式在请求内外部资源都行。因为php走在js前面&#xff0c;所以问题可以从php方面想办法。 1、如何使用js控制修改audio的src或它的source 的src属性实现动态改变aud…

mysql 水平拆分实例_2021先定个小目标?搞清楚MyCat分片的两种拆分方法和分片规则!(二):水平拆分实例解析和代码实现!...

一、概述根据表中的数据的逻辑关系&#xff0c;将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面&#xff0c;这种切分称之为数据的水平(横向)切分。二、案例场景在业务系统中, 有一张表(日志表), 业务系统每天都会产生大量的日志数据 , 单台服务器的数据存储及处理能…

30分钟快速搭建移动应用直传OSS服务

30分钟快速搭建移动应用直传服务 背景 这是一个移动互联的时代。手机APP上传的数据会越来越多。把数据存储的问题交给OSS&#xff0c; 让开发者能更加专注于自己的应用逻辑。 那么怎么样基于OSS构建一个APP存储系统呢&#xff1f; 目的 本教程就是让你在30分钟内搭建一个基于OS…

用java判断一个年份是否为闰年_判断闰年还是平年

↑↑↑点击上方图片&#xff0c;了解详情正文&#xff1a;判断一个年份是闰年还是平年。闰年条件&#xff1a;1.可以被400整除。2.可以被4整除&#xff0c;但是不可以被100整除。代码&#xff1a;Private Sub 查询_Click() If Me.年份 Mod 4 0 And Me.年份 Mod 100 <> 0…

【JavaScript吉光片羽】--- 滑动条

灯光的亮度控制需要一个滑动条&#xff0c;先借用lamp源码中Bar&#xff1a; var Bar function (opt) {var defaults {$id: "", // 进度条dom节点idmin: 1, // 刻度最小值stepCount: 5, // 刻度步数step: 1, // 刻度步长$alpha: "",//显示亮度的idtouchE…

python语言用什么关键字来声明一个类_python使用什么关键字定义类

什么是类&#xff1f; 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 什么是方法&#xff1f; 类中的函数即为方法 如何定义一个类&#xff1f; 定义类&#xff0c;语法格式如下&#xff1a;class ClassName:. . .…

谷歌+安卓,他已经改变了世界两次,但还想多来几次

回望拉里佩奇的创业经历&#xff0c;小巴发现他在几个创业者最有可能犯&#xff08;si&#xff09;错&#xff08;bi&#xff09;的节点上都处理得很好。 你还记得你用的第一个搜索网站是什么吗&#xff1f; Google.com 讲到它的创始人&#xff0c;一般要连起来念&#xff0c; …

一张图看懂单机/集群/热备/磁盘阵列(RAID)

单机部署(Standalone) 只有一个饮水机提供服务器&#xff0c;服务只部署一份 集群部署(Cluster) 多个饮水机同时提供服务&#xff0c;服务冗余部署&#xff0c;每个冗余的服务都对外提供服务&#xff0c;一个服务挂掉时依然可用 热备部署(Hot-swap) 只有一个桶提供服务&#xf…

typescript vuex_Vue3+TypeScript完整项目上手教程

作者&#xff1a;TinssonTaihttps://juejin.im/post/6875713523968802829一个完整的Vue3Ts项目,支持.vue和.tsx写法 项目地址&#xff1a;https://github.com/vincentzyc/vue3-demo.gitTypeScript 是JS的一个超集&#xff0c;主要提供了类型系统和对ES6的支持&#xff0c;使用 …

一些会用到的知识

为什么80%的码农都做不了架构师&#xff1f;>>> HtmlAgilityPack 用来解析HTML代码 microsoft.mshtml CsQuery 解析HTML代码 转载于:https://my.oschina.net/uwith/blog/813725

python图像对比_用python实现对比两张图片的不同

from PIL import Image from PIL import ImageChops def compare_images(path_one, path_two, diff_save_location): """ 比较图片&#xff0c;如果有不同则生成展示不同的图片 参数一: path_one: 第一张图片的路径 参数二: path_two: 第二张图片的路径 参数三:…

Kafka 分布式环境搭建

这篇文章将介绍如何搭建kafka环境&#xff0c;我们会从单机版开始&#xff0c;然后逐渐往分布式扩展。单机版的搭建官网上就有&#xff0c;比较容易实现&#xff0c;这里我就简单介绍下即可&#xff0c;而分布式的搭建官网却没有描述&#xff0c;我们最终的目的还是用分布式来解…

Docker Machine搭建并加入节点

对于集群服务器来讲&#xff0c;要在每台机器上手动安装Docker是一件及其痛苦的事情&#xff0c;还好有Docker Machine这一工具&#xff0c;Docker三剑客中的一角. 一、Docker Machine介绍 这个工具已经出了比较久了&#xff0c;Docker Machine官方介绍&#xff1a;https://doc…