MySQL的瑞士军刀(转)

这里主要讲mysql运维中的一些主要工具,这些工具可能大家都用过,特别是系统管理员或者做linux服务器维护的同学可能都知道这些小工具,这 里讲得会比较多一些,除了系统监控的小工具,还包括一些mysql的工具,甚至深入一些的工具也会讲到,重点是大家听完了后,一定要去自己动手实践一下, 这样才有意义,熟能生巧。

光听说过是不行的,还得都要去实践,实践出真知,面试过很多朋友,问他们他们都说知道用过,但是 细问下他们都关注哪些重要的点,他们就说得比较模糊,这样是不行的,这样会被别人一种感觉,就是你不专业,我们做技术的,一定要专业,特别是这些工具,要 在实践过程中形成自己独有的看法和理解。

1,大概会讲述的内容

vmstat/iostat/mpstat/ifstat/dstat : stat类,查看系统状况,

pstack:此命令可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。对内核和源码有研究的人来说,这个还是相对比较容易理解的。

测试的时候使用下面来模拟product状况,压力测试:

sysbench --test=fileio --file-total-size=10G--file-test-mode=rndrw --max-time=3600 --max-requests=0 run

参考:http://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html

tcprstat:tcprstat是免费开源tcp分析工具,通过监控网络传输来统计分析请求的响应时间

参考:http://blog.csdn.net/wyzxg/article/details/8493658

tcpdump:抓包工具

参考:http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html

perf:从2.6.31内核开始,linux内核自带了一个性能分析工具perf,能够进行函数级与指令级的热点查找,用来进行软件性能分析。

pt-stalk:出现问题的时候收集mysql的用于诊断的数据

orzdba:Perl脚本,用于对Linux主机和MySQL相关指标进行实时监控。

2,vmstat工具

通过yum方式安装sysstat(yum -y install sysstat),就可以使用vmstat了,vmstat:搜集内存、进程,paging等信息。

主要是看虚拟内存方面的,要详细的看虚拟内存的话,用vmstat是一个不错的选择。

vmstat 命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写 情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO 的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如下所示,间隔2秒,采样3次:

[[email protected] ~]# vmstat 2 3

procs-----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

r b   swpd   free  buff  cache   si  so    bi    bo  in   cs us sy id wa st

0  1434092  83364 133292 207336    0   2     9    25  33   47  0  099  1 0

1  0434092  82604 133300 208076    0   0   200  2064 1833 3695  1 17 72 9  0

2  0434092  80876 133300 209512    0   0     0   302 193   64  2 12 82 4  0

[[email protected]~]#

参数介绍:

r 表 示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈 了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队 列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。

b 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。

swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。

free   空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。

buff   Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多M

cache cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)

si  每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。

so  每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。

bi  块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒

bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。

in 每秒CPU的中断次数,包括时间中断

cs 每 秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数 目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者 线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空 间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时 间少了,CPU没有充分利用,是不可取的。

us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。

sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

id  空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。

wt 等待IO CPU时间。

PS: 看得比较多的参数依次是,最基本的(swpd、free、buff、cache)、内存读写(si、so)、cpu方面(in、cs);cs需要经常关 注,它是上下文切换的,尤其是我们单机线程数非常多的时候,就会产生大量的上下文切换,而cpu去不断的上下文切换本身就非常消耗资源,比如你的执行任务 被频繁切换来切换去没有实际被执行。

3,iostat工具

和vmstat一样,通过yum方式安装sysstat(yum -y install sysstat),就可以使用它了。我们主要是看io状况的。

3.1 iostat参数说明

-c 仅显示CPU统计信息.与-d选项互斥.
 -d 仅显示磁盘统计信息.与-c选项互斥.
 -k 以K为单位显示每秒的磁盘请求数,默认单位块.
 -p device | ALL
  与-x选项互斥,用于显示块设备及系统分区的统计信息.也可以在-p后指定一个设备名,如:
  # iostat -p hda
  或显示所有设备
  # iostat -p ALL
 -t   在输出数据时,打印搜集数据的时间.
 -V   打印版本号和帮助信息.
 -x   输出扩展信息.

3.2 iostat输出项目说明

Blk_read:  读入块的当总数.
 Blk_wrtn:  写入块的总数
kB_read/s:  每秒从驱动器读入的数据量,单位为K.
kB_wrtn/s:  每秒向驱动器写入的数据量,单位为K.
 kB_read:  读入的数据总量,单位为K.
 kB_wrtn:  写入的数据总量,单位为K.
 rrqm/s:  将读入请求合并后,每秒发送到设备的读入请求数.
wrqm/s:  将写入请求合并后,每秒发送到设备的写入请求数.
 r/s:  每秒发送到设备的读入请求数.
w/s:  每秒发送到设备的写入请求数.
 rsec/s:  每秒从设备读入的扇区数.
wsec/s:  每秒向设备写入的扇区数.
 rkB/s:  每秒从设备读入的数据量,单位为K.
wkB/s:  每秒向设备写入的数据量,单位为K.
avgrq-sz:  发送到设备的请求的平均大小,单位是扇区.
avgqu-sz:  发送到设备的请求的平均队列长度.
await:  I/O请求平均执行时间.包括发送请求和执行的时间.单位是毫秒.
svctm:  发送到设备的I/O请求的平均执行时间.单位是毫秒.
%util:  在I/O请求发送到设备期间,占用CPU时间的百分比.用于显示设备的带宽利用率.当这个值接近100%时,表示设备带宽已经占满.

3.3 iostat实例

# iostat: 显示一条统计记录,包括所有的CPU和设备.
# iostat -d 2: 每隔2秒,显示一次设备统计信息.
# iostat -d 2 6: 每隔2秒,显示一次设备统计信息.总共输出6次.
# iostat -x sda1 sda2 2 6: 每隔2秒显示一次hda,hdb两个设备的扩展统计信息,共输出6次.
# iostat -p sda1 2 6: 每隔2秒显示一次sda及上面所有分区的统计信息,共输出6次.

PS:主要查看avgqu-sz、await、svctm

4,mpstat工具

另一个用于获取 CPU 相关统计信息的有用的命令是 mpstat。

通过yum方式安装sysstat(yum -y install sysstat),就可以使用mpstat了

4.1 样例

 [[email protected] ~]# mpstat  -P ALL 2 2
Linux 2.6.32-220.el6.x86_64 (data01)     2015年04月03日    _x86_64_  (2 CPU)
 
23时11分43秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
23时11分45秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
23时11分45秒    0    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00   99.50
23时11分45秒    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 
23时11分45秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
23时11分47秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
23时11分47秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
23时11分47秒    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 
平均时间:  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
平均时间:  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
平均时间:    0    0.00    0.00    0.25    0.00    0.00    0.00    0.00    0.00   99.75
平均时间:    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
[[email protected] ~]#

它显示了系统中 CPU 的各种统计信息。–P ALL 选项指示该命令显示所有 CPU 的统计信息,

而不只是特定 CPU 的统计信息。参数 2 2 指示该命令每隔 2 秒运行一次,共运行 2 次。

以上输出首先显示了所有 CPU 的合计指标,然后显示了每个 CPU 各自的指标。最后,在结尾处显示所有 CPU 的平均值。

4.2 各参数的意义

 %user     表示处理用户进程所使用 CPU 的百分比。用户进程是用于应用程序(如 Oracle 数据库)的非内核进程。     
%nice     表示使用 nice 命令对进程进行降级时 CPU 的百分比。在之前的部分中已经对 nice 命令进行了介绍。简单来说,nice 命令更改进程的优先级。    
%system   表示内核进程使用的 CPU 百分比    
%iowait   表示等待进行 I/O 所使用的 CPU 时间百分比    
%irq      表示用于处理系统中断的 CPU 百分比    
%soft     表示用于软件中断的 CPU 百分比    
%idle     显示 CPU 的空闲时间    
%intr/s   显示每秒 CPU 接收的中断总数

当 您拥有前面所述的 vmstat 时,您可能想知道 mpstat 命令的作用。差别很大:mpstat 可以显示每个处理器的统计,而 vmstat 显示所有处理器的统计。因此,编写糟糕的应用程序(不使用多线程体系结构)可能会运行在一个多处理器机器上,而不使用所有处理器。从而导致一个 CPU 过载,而其他 CPU 却很空闲。通过 mpstat 可以轻松诊断这些类型的问题。

PS:针对 Oracle 用户的用法

与 vmstat 相似,mpstat 命令还产生与 CPU 有关的统计信息,因此所有与CPU 问题有关的讨论也都适用于 mpstat。

当您看到较低的 %idle 数字时,您知道出现了 CPU 不足的问题。当您看到较高的 %iowait 数字时,

您知道在当前负载下 I/O 子系统出现了某些问题。该信息对于解决 Oracle 数据库性能问题非常方便。

5,ifstat工具

查看网络流量的小工具

5.1下载安装

下载 ifstat安装包:,  wegt http://gael.roualland.free.fr/ifstat/ifstat-1.1.tar.gz

yum install gcc* -y #预先安装好gcc组件

tar -xvf ifstat-1.1.tar.gz

cd ifstat-1.1

./configure

make

make install

5.2 测试查看检测结果

[[email protected] ifstat-1.1]# ifstat -t -i eth1-T

Time           eth1               Total

HH:MM:SS  KB/s in  KB/s out   KB/s in KB/s out

23:37:38      0.12     0.30      0.12      0.30

23:37:39      0.06     0.15      0.06      0.15

23:37:40      0.06     0.15      0.06      0.15

23:37:41      0.06     0.15      0.06      0.15

6,dstat工具

dstat是一个用来替换 vmstat,iostat netstat,nfsstat和ifstat这些命令的工具, 是一个全能系统信息统计工具. 与sysstat相比, dstat拥有一个彩色的界面, 在手动观察性能状况时, 数据比较显眼容易观察; 而且dstat支持即时刷新, 譬如输入dstat 3, 即每三秒收集一次, 但最新的数据都会每秒刷新显示. 和sysstat相同的是, dstat也可以收集指定的性能资源, 譬如 dstat-c 即显示CPU的使用情况.

可以去Contos和Redhat的下载链接:http://pkgs.repoforge.org/dstat/下载rpm安装包安装;也可以使用yum安装:yuminstall -y dstat

运行dstat,如下所示

 [[email protected] ifstat-1.1]# dstat 3
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
  0   0  99   0   0   0|  24k 9603B|   0     0 | 254B 4410B|  38    48 
  0   0 100   0   0   0|   0  5461B|  80B  525B|   0     0 |  50    53 
  0   0 100   0   0   0|   0     0 |  70B  359B|   0     0 |  33    44 
  0   0 100   0   0   0|   0    21k| 146B  341B|   0     0 |  61    63 
  0   0 100   0   0   0|   0     0 |  60B  346B|   0     0 |  31    44 ^C
[[email protected] ifstat-1.1]#

下面对显示出来的部分信息作一些说明:

1. cpu:hiq,siq分别为硬中断和软中断次数。

2. system:int,csw分别为系统的中断次数(interrupt)和上下文切换(context switch)

其他的都很好理解。

通过dstat --help可以看到常用参数选项

PS:这个软件和vmstat很像, 不过和vmstat相比好像少了io部份的显示, dstat只能显示磁盘的吞吐量而不是显示负载情况, dstat和几乎所有监控软件一样, 只能对整个系统进行监控而不能对某一个进程或某一个程序进行深入分析. 我常使用的参数是dstat -cdlmnpsy, 做个别名链接alias dstat=‘dstat -cdlmnpsy‘

参考:http://blog.csdn.net/yuandianlws/article/details/7004364

7,tcprstat工具

检查mysql偶发事件以及性能异常的工具,抓住当时的现场细节状况。

7.1 Bzr方式安装下载

bzr branch lp:tcprstat

tar czvf tcprstat.tar.gz ./tcprstat

cd tcprstat/

chmod +x bootstrap

安装 automake 和 autoconf

yum list|grep automake

yum list|grep autoconf

yum -y install automake

安装成功后,再重新执行bootstrap

./bootstrap

然后编译

./configure

make

7.2 集成方式下载

# 下载地址,wget下载失败,可以在windows下网页下载,然后secure上传到mysql服务器上面

http://github.com/downloads/Lowercases/tcprstat/tcprstat-static.v0.3.1.x86_64
# cp tcprstat-static.v0.3.1.x86_64 tcprstat
# chmod a+x tcprstat

7.3 实例

./tcprstat -p 3306 -t 1 -n 5

-p监控的端口号,-t 间隔时间,-n运行次数

 [[email protected]_idc_dbm_3_61 ~]# chmod a+x tcprstat 
[[email protected]_idc_dbm_3_61 ~]# ./tcprstat -p 3306 -t 1 -n 5
timestamp count     max       min       avg       med       stddev    95_max    95_avg    95_std    99_max    99_avg          99_std
1428142214          41        548646    28        79647     145       173376    418497    44645     125122    521857          67922     158663
1428142215          25        422953    22        54943     120       118359    201027    25393     65142     366568          39609     93352
1428142216          5         409520    193       155644    223       190817    368069    92175     159287    368069          92175     159287
1428142217          24        881981    45        52977     130       188839    1968      377       556       381189          16934     77661
1428142218          15        356049    49        24126     133       88711     1989      417       549       1989          417       549
[[email protected]_idc_dbm_3_61 ~]#

7.4,实际使用案例

如 果用户觉得我们的mysql数据库响应时间很慢,查询也突然变慢,我们怎么办,方法肯定有许多种,这里可以选择用tcprstat,我们可以 将./tcprstat -l 192.168.52.129 -p 3306 -t 1 -n 0 发给用户,让他在他的应用服务器上做一次啊tcprstat检测看下其中的响应时间是怎么样的,我们就可以知道具体原因是什么了。

参考:http://my.oschina.net/moooofly/blog/157063

8,tcpdump

抓包工具,可以截取到客户端对mysql数据库服务器的所有请求操作。

8.1简介

系 统自带的工具包,如果没有的话,就使用yum安装(yum install –y tcpdump)用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等 逻辑语句来帮助你去掉无用的信息。

通过tcpdump查看参数信息:

[[email protected] ~]# tcpdump --help

tcpdump version 4.1-PRE-CVS_2010_08_20

libpcap version 1.0.0

Usage: tcpdump [-aAdDefIKlLnNOpqRStuUvxX] [-B size ] [ -c count ]

[-C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]

[-i interface ] [ -M secret ] [ -r file ]

[-s snaplen ] [ -T type ] [ -w file ] [ -W filecount ]

[-y datalinktype ] [ -z command ] [ -Z user ]

[expression ]

[[email protected] ~]#

tcpdump -s 0 -l -w - dst xxx.xxx.xxx.xxxand port 3306 |strings

8.2 使用

通过如下命令来监控192.168.52.129服务器mysql当前所执行的一切操作

tcpdump -i eth1 -s 0 -l -w - dst192.168.52.129 and port 3306 |strings,如下所示:

 [[email protected] ~]# tcpdump -i eth1 -s 0 -l -w - dst 192.168.52.129 and port 3306 |strings
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
[email protected]
select * from user_db.UC_USER
[email protected]
5.6.12-log
9?o3MiL}
UmH^~"(APNw-
mysql_native_password
#28000Access denied for user ‘repl‘@‘192.168.52.129‘ (using password: YES)
J6:@
SELECT DATABASE()
46;@
=6<@
test
[email protected]
 UfN
D6>@
show tables
[email protected]
[email protected]@
select * from table_myisam"
 UPs
[email protected]

从 中可以看出tcpdump可以暴露出mysql客户端连接mysql数据库的所有包的信息。Tcpdump可以做审计,把下游客户端对mysql数据库所 做的所有操作都记录统计汇总出来有助于我们分析问题,tcpdump产生的信息比较多,大家可以自己做扩展过滤出自己需要的信息记录。

9,perf工具

直接yum安装即可:yum install perf –y

Perf是一个包含22种子工具的工具集,以下是最常用的5种:

perf list:显示性能事件

perf top:实时显示性能统计信息

大多数是在内核层面

perf stat:分析整体性能

perf record:分析一段时间内的性能

perf report:根据record记录,统计报告

perf 参考:http://blog.chinaunix.net/uid-1829236-id-3212867.html

perf 参考:http://blog.csdn.net/zhangskd/article/details/37902159

10,pt-stalk

工具下载:

wget http://www.percona.com/downloads/percona-toolkit/2.2.13/deb/percona-toolkit_2.2.13.tar.gz

安装:

tar -xvf percona-toolkit_2.2.13.tar.gz

cdpercona-toolkit-2.2.13

perl Makefile.PL

make

make test

make install

使用

pt-stalk--collect-tcpdump --function status --variable Threads_connected --threshold 2500--daemonize --user=root --host=127.0.0.1 --port=3306

主要是用来抓现场的,比如:MySQL Server 性能波动出现的频率很低、例如、几天一次,MySQL Server 性能波动出现的机率很快、例如、几秒闪过,我想输出一些信息,触发这些阈值的时候,就打印一下,那我们有了抓住这个现场之后,我们就可以知道到底是做了什么操作导致这些性能波动的尖刀出现了。

--daemonize:在后台运行。

pt-stalk --collect-tcpdump --functionstatus --variable handler_connected --threshold 3 --user=root --host=127.0.0.1--port=3306

 [[email protected] percona-toolkit-2.2.13]# pt-stalk --collect-tcpdump --function status --variable handler_connected --threshold 3 --user=root --host=127.0.0.1 --port=3306
2015_04_04_19_01_21 Starting /usr/local/bin/pt-stalk --function=status --variable=handler_connected --threshold=3 --match= --cycles=5 --interval=1 --iterations= --run-time=30 --sleep=300 --dest=/var/lib/pt-stalk --prefix= --notify-by-email= --log=/var/log/pt-stalk.log --pid=/var/run/pt-stalk.pid --plugin=
2015_04_04_19_01_21 Detected value is empty; something failed?  Trigger exit status: 0
2015_04_04_19_01_22 Detected value is empty; something failed?  Trigger exit status: 0
2015_04_04_19_01_23 Detected value is empty; something failed?  Trigger exit status: 0
2015_04_04_19_01_24 Detected value is empty; something failed?  Trigger exit status: 0
2015_04_04_19_01_25 Detected value is empty; something failed?  Trigger exit status: 0
2015_04_04_19_01_26 Detected value is empty; something failed?  Trigger exit status: 0
2015_04_04_19_01_27 Detected value is empty; something failed?  Trigger exit status: 0
2015_04_04_19_01_28 Detected value is empty; something failed?  Trigger exit status: 0
2015_04_04_19_01_29 Detected value is empty; something failed?  Trigger exit status: 0

当你发现mysql服务器性能有波动,遇到性能问题遇到偶发事件了,但是你又无法查出这段时间mysql做了什么,你可以使用pt-stalk来抓取这些现场的所有行为,来帮助你分析查询。

11,orzdba

安装请参考:http://wenku.baidu.com/view/79ca1eb065ce0508763213bf

先需要安装svn客户端以及tcprstat,yum安装即可:yum install -y svn;yum install -y tcprstat;

然后下载orzdba包:

svn co http://code.taobao.org/svn/orzdba/trunk

cd trunk/

chmod a+x orzdba

大概包括Sys、mysql、innodb、lazy 4个方面的,是一个集大成者,是淘宝的一个工程师写的,它把系统的,我们需要记住lazy就足够用了,用lazy就基本可以满足我们大部分的应用需要了。Lazy命令如下:

./orzdba -lazy -rt -S/usr/local/mysql/mysql.sock

 -------- -----load-avg---- ---cpu-usage--- ---swap---                     -QPS- -TPS-         -Hit%- --------tcprstat(us)-------- 
  time  |  1m    5m   15m |usr sys idl iow|   si   so|  ins   upd   del    sel   iud|     lor    hit|  count    avg 95-avg 99-avg|
21:00:17| 0.32  0.28  0.37|  0   0  99   0|    0    0|    0     0     0      0     0|       0 100.00|      0      0      0      0|
21:00:18| 0.32  0.28  0.37|  2  24  43  30|    0  128|  903     0     0      1   903|    4774 100.00|      0      0      0      0|
21:00:19| 0.32  0.28  0.37|  2  21  49  27|    0    0|  742     0     0      1   742|    3922 100.00|      0      0      0      0|
21:00:20| 0.32  0.28  0.37|  3  28  53  17|    0    0| 1108     0     0      1  1108|    5861 100.00|      0      0      0      0|
21:00:21| 0.32  0.28  0.37|  3  29  52  17|    0    0| 1037     0     0      1  1037|    5492 100.00|      0      0      0      0|
21:00:22| 0.29  0.28  0.37|  3  29  52  16|    0    0| 1003     0     0      1  1003|    5276 100.00|      0      0      0      0|
21:00:23| 0.29  0.28  0.37|  3  28  54  15|    8    0|  744     0     0      2   744|    5097 100.00|      0      0      0      0|
21:00:24| 0.29  0.28  0.37|  3  28  51  19|    0   18|  777     0     0      1   777|    4222 100.00|      0      0      0      0|
21:00:25| 0.29  0.28  0.37|  3  30  51  16|    0    0|  997     0     0      1   997|    5291 100.00|      0      0      0      0|
21:00:27| 0.27  0.27  0.36|  3  29  52  17|    0    0| 1160     0     0      1  1160|    6121 100.00|      0      0      0      0|
^C
Exit Now...
 
[[email protected] trunk]#

这个时候,如果你还想看更详细的信息,可以不用lazy,可以用innodb的参数来,可以就看到buffer pool里面的data、free、dirty等,非常全的信息,大家可以作为非常重要的参考,命令如下:

./orzdba -innodb -rt -S/usr/local/mysql/mysql.sock

 -------- ---innodb bp pages status-- -----innodb data status---- --innodb log--   his --log(byte)--  read ---query--- --------tcprstat(us)-------- 
  time  |   data   free  dirty flush| reads writes  read written|fsyncs written| list uflush  uckpt  view inside  que|  count    avg 95-avg 99-avg|
21:01:13|      0      0      0     0|     0      0      0      0|     0       0|    0      0      0     0     0     0|      0      0      0      0|
21:01:14|   4245  12137    815     0|     0     46      0    55k|     0     55k|  593      0   11.6m    0     0     0|      0      0      0      0|
21:01:15|   4248  12134    818     0|     0    104      0   131k|     0    131k|  593      0   11.7m    0     0     0|      0      0      0      0|
21:01:16|   4251  12131    821     0|     0    129      0   153k|     0    153k|  593     68   11.8m    0     1     0|      0      0      0      0|
21:01:17|   4256  12126    826     0|     0    145      0   182k|     0    182k|  593      0   11.9m    0     0     0|      0      0      0      0|
21:01:19|   4258  12124    828     0|     0     85      0   110k|     0    110k|  593      0   11.9m    0     0     0|      0      0      0      0|
21:01:20|   4261  12121    831     0|     0     71      0    91k|     0     89k|  593    576   12.0m    0     0     0|      0      0      0      0|
21:01:21|   4265  12117    841     0|     0    161      0   203k|     0    203k|  597     17   12.1m    0     0     0|      0      0      0      0|
^C
Exit Now...

其它监控项:

网络:./orzdba -n eth1 -rt -S /usr/local/mysql/mysql.sock

Mysql:./orzdba -mysql -rt-S /usr/local/mysql/mysql.sock

所以说orzdba基本监控了所有的mysql状态以及系统状态了,大家可以考虑在线上使用orzdba来监控线上mysql库

参考:http://www.freebuf.com/tools/5262.html

参考:http://wenku.baidu.com/view/79ca1eb065ce0508763213bf

12,orztop

实时查看当前的processlist和full processlist;

可以查看mysql数据库实时运行的sql状况的工具,以前苦于通过show processlist/show full processlist抓取sql的同志们现在只要盯一盯屏幕就可以了,非常的方便,

下载:wget http://hidba.org/wp-content/uploads/2013/06/orztop.rar

安装:先进入cpan窗口,安装dbi、dbd,然后退出解压缩orztop.rar包即可使用

命令如下:

orztop -h=192.168.52.129 -P=3006 -u=orztop-p=orztop -t=1

时间: 2024-11-06 07:46:58

MySQL的瑞士军刀(转)的相关文章

MySQL 瑞士军刀

MySQL的瑞士军刀 这里主要讲mysql运维中的一些主要工具,这些工具可能大家都用过,特别是系统管理员或者做linux服务器维护的同学可能都知道这些小工具,这里讲得会比较多一些,除了系统监控的小工具,还包括一些mysql的工具,甚至深入一些的工具也会讲到,重点是大家听完了后,一定要去自己动手实践一下,这样才有意义,熟能生巧. 光听说过是不行的,还得都要去实践,实践出真知,面试过很多朋友,问他们他们都说知道用过,但是细问下他们都关注哪些重要的点,他们就说得比较模糊,这样是不行的,这样会被别人一种

JetBrains发布DataGrip 1.0——数据库与SQL领域中的瑞士军刀

本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/12/datagrip-released 近日,来自捷克的软件公司JetBrains发布了全新的重量级产品DataGrip 1.0--号称数据库与SQL领域中的瑞士军刀.DataGrip的前身0xDBE已经发布一年多的时间了,这也是JetBrains向广大用户提供的开发版本,每个版本都有一定的使用期限,过期后用户可以从JetBrains网站上下载新的开发版本.经过了长时间的开

MySQL数据库运维课程

MySQL数据库运维课程 http://www.dataguru.cn/article-4834-1.html?union_site=comm100 课程大纲 第一课:机器选型.系统规划 第二课:安装部署 第三课:压力测试 第四课:性能优化 第五课:字符集和权限安全 第六课:日志系统 第七课:备份与恢复1 第八课:备份与恢复2 第九课:常用工具 第十课:MySQL集群 第十一课:分布式集群 第十二课:集群高可用(HA)和容灾演练 第十三课:自动化运维 第十四课:监控和审计系统 第十五课:成长规划

【Mysql 学习路线图】

第1周 机器选型.系统规划 机器选型 业务评估--根据业务进行评估,转化为机器资源需求. SSD vs HDD--熟悉SSD和HDD的架构设计,了解SSD的发展趋势. 成本评估--通过成本评估,选择合适机型. 系统规划 文件系统规划--根据MySQL的特点,规划文件系统,IO调度. 数据库配置--根据IO写入特点,配置MySQL数据库. 第2周 安装部署 源码编译--源码编译安装操作处理方法. 功能定制--定制mysql的Server限流,SQL限流,并行复制,ThreadPool功能. 规模化

Android系统搭建PHP+MySql环境,支持SqlLite,完美运行ecshop、phpcms、Discuz_X3等开源程序

我从事Web开发有1年多的时间,在这段时间里一直研究新技术.从今以后将安家于此,与众多Web开发爱好者交流与学习.今后我将不断终结过年1年学习的知识和未来接触与学习的技能,分享自己对Web开发的独特见解,本博文中有任何问题,都可以直接联系我或者留言,让我们一起为未来共勉! 又快要过年了,今天预备回家,但是现在手头只有一台台式机(因为本人不太爱用笔记本,之前的放久了受潮坏了),回家带着不方便,但是回去的时候不学习就是不对的,从事Web开发就是一个不停学习的过程. 于是前天突发奇想Android系统

锦囊妙计在手,MySQL数据库无忧矣

老张我呢不仅是个金庸迷,还是个三国迷.就是喜欢看后期蜀国诸葛亮与魏国司马懿之间的斗智斗勇.各种锦囊妙计的使用,堪称经典.针对管理MySQL数据库这块,张老师也有很多妙计,今后一一给大家介绍.说回三国,我个人更倾向于蜀国可以统一,但事与愿违,很可惜,最终还是魏国司马炎统一了天下.有人把蜀国失败的原因归结于一个扶不起的刘婵,也有人把原因归结于天命,更有甚者说是"卧龙凤雏得其一"才可得天下,而刘备两人兼得了.现在听听很可笑,其实任何人的命运还都是掌握在自己手中的. 我们要学会尽人事知天命,努

程序员的瑞士军刀----Python

这篇文章比较难以成型.大概想表达的意思是,程序员应该通过脚本语言来完成一些"批量"或"自动化"的操作,而不是重复的去做体力劳动. 具体方式因人而异,比如有人非常熟悉bat或者shell的编写,或者有人非常熟悉php.perl的编写,而我更早接触了Python,所以很多工具更加习惯用Python来完成. 这里会先讲一下我的各种需求,以及脚本语言的选择,后面会针对Python逐渐补全很多"惯用法",把自己常用的功能和代码段记录下来. 一.综述 Pyt

MySQL 必备工具使用的6个锦囊妙计!

这款工具是 MySQL 一个重要分支 percona 的,名称叫做 percona-toolkit(一把锋利的瑞士军刀),它呢是一组命令的集合.今儿给大家介绍几个我们在生产环境中最长用到的. 工具包的下载地址:https://www.percona.com/downloads/percona-toolkit/LATEST/ 安装过程很简单,先解压:tar -zxvf percona-toolkit-3.0.3_x86_64.tar.gz由于是二进制的包,解压完可以直接进到percona-tool

记一次MySQL找回用户数据

事情经过 有天,我们公司外区的一个销售C说他8月3号以前的工作流记录找不到了.问清缘由,原来是更新了微信号(我们公司的工作流是基于企业微信开发的).经过分析,微信号和流程数据并没什么关系,所以初步得出结论:本来只需要更新微信号的,结果我们公司的流程系统管理员把用户先删除,再创建了新的用户. 解决过程 1.首先想到的是直接从定时备份数据里面找回原来的用户ID,结果发现系统只备份了十天的记录,而工作流系统上显示销售C只有8月3号以后的流程记录,距今已经40多天,从自动备份的数据里已经无法恢复. 2.