MySQL性能分析、及调优工具使用详解
本文汇总了MySQL DBA日常工作中用到的些工具,方便初学者,也便于自己查阅。
先介绍下基础设施(CPU、IO、网络等)检查的工具:
vmstat、sar(sysstat工具包)、mpstat、oprofile、nicstat、dstat、iotop、tsar、iostat 掌握几个即可,功能大同小异(个人常用的是 dstat、sar)。
CPU:
mpstat -P ALL 1 每隔1s显示一次

上图可以看到CPU调度不均衡。因此我们可以尝试将pid为700的进程绑定到第四颗CPU上。taskset -p 03 700
磁盘:
vmstat -S m 1 10
iostat -xkdz 1
iotop
pt-ioprofile --profile-pid=$(pidof mysqld) --cell=sizes --run-time=30

内存:
vmtouch 【很cool的工具】 参考:http://blog.yufeng.info/archives/1903
作用:
查看一个文件(或者目录)哪些部分在内存中;
把文件调入内存;
把文件清除出内存;
把文件锁住在内存中而不被换出到磁盘上;
1. 看看/bin目录有多少内容在内存中
$ vmtouch /bin/
Files: 92
Directories: 1
Resident Pages: 348/1307 1M/5M 26.6%
Elapsed: 0.003426 seconds
2. 看看某文件(big-dataset.txt)有多少在内存中
How much ofbig-dataset.txt is currently in memory?
$ vmtouch -v big-dataset.txt
big-dataset.txt
[ ] 0/42116
Files: 1
Directories: 0
Resident Pages: 0/42116 0/164M 0%
Elapsed: 0.005182 seconds
个即可,其他的状态使用dstat、sar等命令来获取。
注意:下面的2个参数的调用默认是没有地方输入用户名和密码的,因此建议将密码写到/etc/my.cnf 的client段里面。
./orzdba -mysql -C 10 -i 1

./orzdba -innodb -C 10 -i 1

tcpdump抓包捕获瞬间的SQL
step1、
tcpdump -s 65535 -x -nn -q -tttt -i eth0 -c 5000 port 3306 > /root/dump.txt
上面的命令参数含义:
-s #snaplen, 也就是数据包的截取长度
-nn #将地址、端口显示为数字格式【经常用】
-q #快速输出。只输出较少的协议信息。【经常用】
-tttt # 在每行打印的时间戳之前添加日期的打印【经常用】
-c #在收到指定的数量的分组后,tcpdump就会停止。
step2、
pt-query-digest --type tcpdump/root/dump.txt 即可分析出结果
#!/bin/bash
#实时采集并分析1000个分组的sql包数据
#Date:2017/05/02
#注意部分机器的网卡是eth1或多网卡,脚本里面需要做修改
source/etc/profile
[! -e /usr/sbin/tcpdump ] && yum install tcpdump -y > /dev/null 2>&1
#如果抓取的数据太少,可以修改-c 5000 多抓取些用于分析
tcpdump -s 65535 -x -nn -q -tttt -i eth0 -c 5000 port 3306 > /root/dump.txt && pt-query-digest --type tcpdump /root/dump.txt > /root/pt_result.log
if[ $? -eq 0 ] ; then
echo "统计结果输出到/root/pt_result.log" && rm -f /root/dump.txt
else
echo "程序运行出错"
fi
dodba 【推荐】
doDBA tools是一个基于控制台的远程监控工具,它不需要在本地/远程系统上安装任何软件,它可以实时收集操作系统、MySQL、InnoDB的实时性能状态数据,并可以生成Doing日志文件,来帮助你快速了解/优化系统及MySQL数据库。
远程收集系统信息是通过ssh(用户名密码或建立信任)的方式连接到远程服务器上收集,收集的方法都是通过读取Linux的proc下的等meminfo,diskstats,uptime,net,vmstat ,cpuinfo ,loadavg等文件,这和pmm,zabbix收集方式一致。
远程收集MySQL信息是通过 MySQL tcp连接到MySQL数据库上收集,只需要授予连接用户PROCESS、SELECT权限即可。
系统信息和MySQL信息的收集可以分离,如果只想收集系统信息,只需要提供系统用户名密码即可,如果只收集MySQL可以只提供MySQL连接信息,如果是rds用户,可以使用-rds参数,在使用mytop时会自动忽略系统信息的收集。
http://www.ywnds.com/?p=7499
下载地址:https://github.com/dblucyne/dodba_tools
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
功能非常强大,官方地址:https://github.com/dblucyne/dodba_tools 介绍的很详细
具体如何使用在运维帮的公众号上面有比较全面的介绍,下面是我摘录的部分内容:
./doDBA-help 查看帮助
收集Linux性能数据
./doDBA-h=192.168.2.11 -sys # 通过ssh远程连接去获取信息

搜集MySQL性能数据
./doDBA-h=127.0.0.1 -mysql

执行前需要先去修改 doDBA.conf 配置上mysql的用户名密码和端口:
{
"Host":"",
"Huser":"root",
"Hport":"22",
"Hpwd": "",
个活跃线程时就自动执行show processlist 和show engine innodb status\G 并把采集到的信息存到dbdba.log
配合shell批量采集
cat ip.txt 内容如下:
192.168.2.11
192.168.2.12
cat ip.txt | while read ip; do echo $ip; ./doDBA -h=$ip -mysql -log
重磅推荐:my.cnf 参数计算器(推荐):
http://www.mysqlcalculator.com/
不同物理硬件的服务器,my.cnf 的部分参数需要调整,如果参数设置的太大,可能导致OOM。因此有必要用这个计算器算一下。
上文中部分内容参考自网易王洪权的ppt。
MySQL性能分析、及调优工具使用详解的更多相关文章
- MySQL性能诊断与调优 转
http://www.cnblogs.com/preftest/ http://www.highperfmysql.com/ BOOK LAMP 系统性能调优,第 3 部分: MySQL 服务 ...
- MySQL性能诊断与调优
LAMP 系统性能调优,第 3 部分: MySQL 服务器调优http://www.ibm.com/developerworks/cn/linux/l-tune-lamp-3.html LoadRun ...
- x86服务器中网络性能分析与调优 转
x86服务器中网络性能分析与调优 2017-04-05 巨枫 英特尔精英汇 [OpenStack 易经]是 EasyStack 官微在2017年新推出的技术品牌,将原创技术干货分享给您,本期我们讨论 ...
- (转)MySQL性能调优my.cnf详解
MySQL性能调优my.cnf详解 https://blog.linuxeye.cn/379.html http://blog.csdn.net/orichisonic/article/details ...
- 软件性能测试分析与调优实践之路-Web中间件的性能分析与调优总结
本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书<软件性能测试分析与调优实践之路>部分章节归纳. 在国内互联网公司中,Web中间件用的最多的就是Apache和Nginx这两款 ...
- 软件性能测试分析与调优实践之路-Java应用程序的性能分析与调优-手稿节选
Java编程语言自从诞生起,就成为了一门非常流行的编程语言,覆盖了互联网.安卓应用.后端应用.大数据等很多技术领域,因此Java应用程序的性能分析和调优也是一门非常重要的课题.Java应用程序的性能直 ...
- mysql性能的检查和调优方法
mysql性能的检查和调优方法 发布时间:2009 年 10 月 4 日 发布者: OurMySQL 来源:sudone.com 才被阅读:3,524 次 才1条评论 我一直是使用my ...
- Linux服务器性能分析与调优
一 linux服务器性能查看 1.1 cpu性能查看 1.查看物理cpu个数: cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc ...
- linux性能分析及调优
第一节:cpu 性能瓶颈 计算机中,cpu是最重要的一个子系统,负责所有计算任务: 基于摩尔定律的发展,cpu是发展最快的一个硬件,所以瓶颈很少出现在cpu上: 我们线上环境的cpu都是多核的,并且基 ...
随机推荐
- android recovery 主系统代码分析【转】
本文转载自:http://blog.csdn.net/andyhuabing/article/details/9248713 阅读完上一篇文章: http://blog.csdn.net/andyhu ...
- elasticsearch 索引搜索和索引性能优化配置——思路:去掉不必要的数据,减小数据的磁盘空间占用,同时提升性能
压缩配置: index.codec: best_compression 合并索引: curl –XPOST localhost:9200/hec_test3/_forcemerge’ 配置mappin ...
- etcd数据备份与恢复验证
一.单机 说明:执行etcd备份数据的恢复的机器必须和原先etcd所在机器一致 1.单机备份 etcdctl --endpoints="https://10.25.72.62:2379&qu ...
- POJ 1160 DP
题目: poj 1160 题意: 给你n个村庄和它的坐标,现在要在其中一些村庄建m个邮局,想要村庄到最近的邮局距离之和最近. 分析: 这道题.很经典的dp dp[i][j]表示建第i个邮局,覆盖到第j ...
- EmguCV学习——视频与图片互转
其实视频转图片在上篇文章中已经有些眉目了,其实就是按帧读取视频,然后把帧保存就ok.然后自己再加个进度条美化一下...这代码简单易懂,还是直接上代码吧. 视频转图片 /// <summary&g ...
- Lua eval实现
因为loadstring总是在全局环境中编译它的串,所以编译出的函数访问的变量是全局变量.为了避免污染全局环境我们需要用setfenv修改函数的环境 function eval(equation, v ...
- Android几种常见的多渠道(批量)打包方式介绍
多渠道打包,主要是为了统计不同的渠道上包的下载数量,渠道越多,我们需要打的包数量越多,这个时候,我们没法去使用单纯的手动打包去一个一个的生成不同的渠道包,我们需要更高效的打包方式. 声明渠道方式一: ...
- android黑科技系列——Android中新型安全防护策略
一.前言 最近有一个同学,发给我一个设备流量访问检测工具,但是奇怪的是,他从GP上下载下来之后安装就没有数据了,而在GP上直接安装就可以.二次打包也会有问题.所以这里就可以判断这个app应该是有签名校 ...
- 【Linux】Vi中的各种命令
Ctrl+u:向文件首翻半屏: Ctrl+d:向文件尾翻半屏: Ctrl+f:向文件尾翻一屏: Ctrl+b:向文件首翻一屏: Esc:从编辑模式切换到命令模式: ZZ:命令模式下保存当前文件所做的修 ...
- 《Java编程思想》学习笔记(一)
1——面向对象和JVM基础 1.java中的4种访问制权限: (1).public:最大访问控制权限,对所有的类都可见. (2).protect:同一包可见,不在同一个包的所有子类也可见. (3). ...