ホームページ >データベース >mysql チュートリアル >MySQL的瑞士军刀_MySQL
MySQL的瑞士军刀
这里主要讲mysql运维中的一些主要工具,这些工具可能大家都用过,特别是系统管理员或者做linux服务器维护的同学可能都知道这些小工具,这里讲得会比较多一些,除了系统监控的小工具,还包括一些mysql的工具,甚至深入一些的工具也会讲到,重点是大家听完了后,一定要去自己动手实践一下,这样才有意义,熟能生巧。
光听说过是不行的,还得都要去实践,实践出真知,面试过很多朋友,问他们他们都说知道用过,但是细问下他们都关注哪些重要的点,他们就说得比较模糊,这样是不行的,这样会被别人一种感觉,就是你不专业,我们做技术的,一定要专业,特别是这些工具,要在实践过程中形成自己独有的看法和理解。
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
tcprstat:tcprstat是免费开源tcp分析工具,通过监控网络传输来统计分析请求的响应时间
tcpdump:抓包工具
perf:从2.6.31内核开始,linux内核自带了一个性能分析工具perf,能够进行函数级与指令级的热点查找,用来进行软件性能分析。
pt-stalk:出现问题的时候收集mysql的用于诊断的数据
orzdba:Perl脚本,用于对Linux主机和MySQL相关指标进行实时监控。
通过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次:
[root@data01 ~]# 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
[root@data01~]#
参数介绍:
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去不断的上下文切换本身就非常消耗资源,比如你的执行任务被频繁切换来切换去没有实际被执行。
和vmstat一样,通过yum方式安装sysstat(yum -y install sysstat),就可以使用它了。我们主要是看io状况的。
-c 仅显示CPU统计信息.与-d选项互斥.
<strong>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%时,表示设备带宽已经占满.</strong>
<strong># 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次.</strong>
PS:主要查看avgqu-sz、await、svctm
另一个用于获取 CPU 相关统计信息的有用的命令是 mpstat。
通过yum方式安装sysstat(yum -y install sysstat),就可以使用mpstat了
<strong> [root@data01 ~]# mpstat -P ALL 2 2</strong>
<strong>Linux 2.6.32-220.el6.x86_64 (data01) 2015年04月03日 _x86_64_ (2 CPU)</strong>
<strong> </strong>
<strong>23时11分43秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle</strong>
<strong>23时11分45秒 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00</strong>
<strong>23时11分45秒 0 0.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 99.50</strong>
<strong>23时11分45秒 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00</strong>
<strong> </strong>
<strong>23时11分45秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle</strong>
<strong>23时11分47秒 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00</strong>
<strong>23时11分47秒 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00</strong>
<strong>23时11分47秒 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00</strong>
<strong> </strong>
<strong>平均时间: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle</strong>
<strong>平均时间: all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00</strong>
<strong>平均时间: 0 0.00 0.00 0.25 0.00 0.00 0.00 0.00 0.00 99.75</strong>
<strong>平均时间: 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00</strong>
<strong>[root@data01 ~]#</strong>
它显示了系统中 CPU 的各种统计信息。–P ALL 选项指示该命令显示所有 CPU 的统计信息,
而不只是特定 CPU 的统计信息。参数 2 2 指示该命令每隔 2 秒运行一次,共运行 2 次。
以上输出首先显示了所有 CPU 的合计指标,然后显示了每个 CPU 各自的指标。最后,在结尾处显示所有 CPU 的平均值。
<strong> %user 表示处理用户进程所使用 CPU 的百分比。用户进程是用于应用程序(如 Oracle 数据库)的非内核进程。 </strong>
<strong>%nice 表示使用 nice 命令对进程进行降级时 CPU 的百分比。在之前的部分中已经对 nice 命令进行了介绍。简单来说,nice 命令更改进程的优先级。 </strong>
<strong>%system 表示内核进程使用的 CPU 百分比 </strong>
<strong>%iowait 表示等待进行 I/O 所使用的 CPU 时间百分比 </strong>
<strong>%irq 表示用于处理系统中断的 CPU 百分比 </strong>
<strong>%soft 表示用于软件中断的 CPU 百分比 </strong>
<strong>%idle 显示 CPU 的空闲时间 </strong>
<strong>%intr/s 显示每秒 CPU 接收的中断总数</strong>
当您拥有前面所述的 vmstat 时,您可能想知道 mpstat 命令的作用。差别很大:mpstat 可以显示每个处理器的统计,而 vmstat 显示所有处理器的统计。因此,编写糟糕的应用程序(不使用多线程体系结构)可能会运行在一个多处理器机器上,而不使用所有处理器。从而导致一个 CPU 过载,而其他 CPU 却很空闲。通过 mpstat 可以轻松诊断这些类型的问题。
PS:针对 Oracle 用户的用法
与 vmstat 相似,mpstat 命令还产生与 CPU 有关的统计信息,因此所有与CPU 问题有关的讨论也都适用于 mpstat。
当您看到较低的 %idle 数字时,您知道出现了 CPU 不足的问题。当您看到较高的 %iowait 数字时,
您知道在当前负载下 I/O 子系统出现了某些问题。该信息对于解决 Oracle 数据库性能问题非常方便。
查看网络流量的小工具
下载 ifstat安装包
yum install gcc* -y #预先安装好gcc组件
tar -xvf ifstat-1.1.tar.gz
cd ifstat-1.1
./configure
make
make install
[root@data01 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
dstat是一个用来替换 vmstat,iostat netstat,nfsstat和ifstat这些命令的工具, 是一个全能系统信息统计工具. 与sysstat相比, dstat拥有一个彩色的界面, 在手动观察性能状况时, 数据比较显眼容易观察; 而且dstat支持即时刷新, 譬如输入dstat 3, 即每三秒收集一次, 但最新的数据都会每秒刷新显示. 和sysstat相同的是, dstat也可以收集指定的性能资源, 譬如 dstat-c 即显示CPU的使用情况.
运行dstat,如下所示
<strong> [root@data01 ifstat-1.1]# dstat 3</strong>
<strong>----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--</strong>
<strong>usr sys idl wai hiq siq| read writ| recv send| in out | int csw </strong>
<strong> 0 0 99 0 0 0| 24k 9603B| 0 0 | 254B 4410B| 38 48 </strong>
<strong> 0 0 100 0 0 0| 0 5461B| 80B 525B| 0 0 | 50 53 </strong>
<strong> 0 0 100 0 0 0| 0 0 | 70B 359B| 0 0 | 33 44 </strong>
<strong> 0 0 100 0 0 0| 0 21k| 146B 341B| 0 0 | 61 63 </strong>
<strong> 0 0 100 0 0 0| 0 0 | 60B 346B| 0 0 | 31 44 ^C</strong>
<strong>[root@data01 ifstat-1.1]#</strong>
下面对显示出来的部分信息作一些说明:
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'
检查mysql偶发事件以及性能异常的工具,抓住当时的现场细节状况。
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
# 下载地址,wget下载失败,可以在windows下网页下载,然后secure上传到mysql服务器上面
./tcprstat -p 3306 -t 1 -n 5
-p监控的端口号,-t 间隔时间,-n运行次数
<strong> [root@wgq_idc_dbm_3_61 ~]# chmod a+x tcprstat </strong>
<strong>[root@wgq_idc_dbm_3_61 ~]# ./tcprstat -p 3306 -t 1 -n 5</strong>
<strong>timestamp count max min avg med stddev 95_max 95_avg 95_std 99_max 99_avg 99_std</strong>
<strong>1428142214 41 548646 28 79647 145 173376 418497 44645 125122 521857 67922 158663</strong>
<strong>1428142215 25 422953 22 54943 120 118359 201027 25393 65142 366568 39609 93352</strong>
<strong>1428142216 5 409520 193 155644 223 190817 368069 92175 159287 368069 92175 159287</strong>
<strong>1428142217 24 881981 45 52977 130 188839 1968 377 556 381189 16934 77661</strong>
<strong>1428142218 15 356049 49 24126 133 88711 1989 417 549 1989 417 549</strong>
<strong>[root@wgq_idc_dbm_3_61 ~]#</strong>
如果用户觉得我们的mysql数据库响应时间很慢,查询也突然变慢,我们怎么办,方法肯定有许多种,这里可以选择用tcprstat,我们可以将./tcprstat -l 192.168.52.129 -p 3306 -t 1 -n 0 发给用户,让他在他的应用服务器上做一次啊tcprstat检测看下其中的响应时间是怎么样的,我们就可以知道具体原因是什么了。
抓包工具,可以截取到客户端对mysql数据库服务器的所有请求操作。
系统自带的工具包,如果没有的话,就使用yum安装(yum install –y tcpdump)用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
通过tcpdump查看参数信息:
[root@data02 ~]# 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 ]
[root@data02 ~]#
tcpdump -s 0 -l -w - dst xxx.xxx.xxx.xxxand port 3306 |strings
通过如下命令来监控192.168.52.129服务器mysql当前所执行的一切操作
tcpdump -i eth1 -s 0 -l -w - dst192.168.52.129 and port 3306 |strings,如下所示:
<strong> [root@data01 ~]# tcpdump -i eth1 -s 0 -l -w - dst 192.168.52.129 and port 3306 |strings</strong>
<strong>tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes</strong>
<strong>V68@</strong>
<strong>select * from user_db.UC_USER</strong>
<strong>469@</strong>
<strong>5.6.12-log</strong>
<strong>9?o3MiL}</strong>
<strong>UmH^~"(APNw-</strong>
<strong>mysql_native_password</strong>
<strong>#28000Access denied for user 'repl'@'192.168.52.129' (using password: YES)</strong>
<strong>J6:@</strong>
<strong>SELECT DATABASE()</strong>
<strong>46;@</strong>
<strong>=6<@</strong>
<strong>test</strong>
<strong>46=@</strong>
<strong> UfN</strong>
<strong>D6>@</strong>
<strong>show tables</strong>
<strong>46?@</strong>
<strong>S6@@</strong>
<strong>select * from table_myisam"</strong>
<strong> UPs</strong>
<strong>46A@</strong>
从中可以看出tcpdump可以暴露出mysql客户端连接mysql数据库的所有包的信息。Tcpdump可以做审计,把下游客户端对mysql数据库所做的所有操作都记录统计汇总出来有助于我们分析问题,tcpdump产生的信息比较多,大家可以自己做扩展过滤出自己需要的信息记录。
直接yum安装即可:yum install perf –y
Perf是一个包含22种子工具的工具集,以下是最常用的5种:
perf list:显示性能事件
perf top:实时显示性能统计信息
大多数是在内核层面
perf stat:分析整体性能
perf record:分析一段时间内的性能
perf report:根据record记录,统计报告
安装:
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
<strong> [root@data01 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</strong>
<strong>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=</strong>
<strong>2015_04_04_19_01_21 Detected value is empty; something failed? Trigger exit status: 0</strong>
<strong>2015_04_04_19_01_22 Detected value is empty; something failed? Trigger exit status: 0</strong>
<strong>2015_04_04_19_01_23 Detected value is empty; something failed? Trigger exit status: 0</strong>
<strong>2015_04_04_19_01_24 Detected value is empty; something failed? Trigger exit status: 0</strong>
<strong>2015_04_04_19_01_25 Detected value is empty; something failed? Trigger exit status: 0</strong>
<strong>2015_04_04_19_01_26 Detected value is empty; something failed? Trigger exit status: 0</strong>
<strong>2015_04_04_19_01_27 Detected value is empty; something failed? Trigger exit status: 0</strong>
<strong>2015_04_04_19_01_28 Detected value is empty; something failed? Trigger exit status: 0</strong>
<strong>2015_04_04_19_01_29 Detected value is empty; something failed? Trigger exit status: 0</strong>
当你发现mysql服务器性能有波动,遇到性能问题遇到偶发事件了,但是你又无法查出这段时间mysql做了什么,你可以使用pt-stalk来抓取这些现场的所有行为,来帮助你分析查询。
先需要安装svn客户端以及tcprstat,yum安装即可:yum install -y svn;yum install -y tcprstat;
然后下载orzdba包:
cd trunk/
chmod a+x orzdba
大概包括Sys、mysql、innodb、lazy 4个方面的,是一个集大成者,是淘宝的一个工程师写的,它把系统的,我们需要记住lazy就足够用了,用lazy就基本可以满足我们大部分的应用需要了。Lazy命令如下:
./orzdba -lazy -rt -S/usr/local/mysql/mysql.sock
<strong> -------- -----load-avg---- ---cpu-usage--- ---swap--- -QPS- -TPS- -Hit%- --------tcprstat(us)-------- </strong>
<strong> time | 1m 5m 15m |usr sys idl iow| si so| ins upd del sel iud| lor hit| count avg 95-avg 99-avg|</strong>
<strong>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|</strong>
<strong>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|</strong>
<strong>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|</strong>
<strong>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|</strong>
<strong>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|</strong>
<strong>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|</strong>
<strong>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|</strong>
<strong>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|</strong>
<strong>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|</strong>
<strong>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|</strong>
<strong>^C</strong>
<strong>Exit Now...</strong>
<strong>[root@data01 trunk]#</strong>
这个时候,如果你还想看更详细的信息,可以不用lazy,可以用innodb的参数来,可以就看到buffer pool里面的data、free、dirty等,非常全的信息,大家可以作为非常重要的参考,命令如下:
./orzdba -innodb -rt -S/usr/local/mysql/mysql.sock
<strong> -------- ---innodb bp pages status-- -----innodb data status---- --innodb log-- his --log(byte)-- read ---query--- --------tcprstat(us)-------- </strong>
<strong> time | data free dirty flush| reads writes read written|fsyncs written| list uflush uckpt view inside que| count avg 95-avg 99-avg|</strong>
<strong>21:01:13| 0 0 0 0| 0 0 0 0| 0 0| 0 0 0 0 0 0| 0 0 0 0|</strong>
<strong>21:01:14| 4245 12137 815 0| 0 46 0 55k| 0 55k| 593 0 11.6m 0 0 0| 0 0 0 0|</strong>
<strong>21:01:15| 4248 12134 818 0| 0 104 0 131k| 0 131k| 593 0 11.7m 0 0 0| 0 0 0 0|</strong>
<strong>21:01:16| 4251 12131 821 0| 0 129 0 153k| 0 153k| 593 68 11.8m 0 1 0| 0 0 0 0|</strong>
<strong>21:01:17| 4256 12126 826 0| 0 145 0 182k| 0 182k| 593 0 11.9m 0 0 0| 0 0 0 0|</strong>
<strong>21:01:19| 4258 12124 828 0| 0 85 0 110k| 0 110k| 593 0 11.9m 0 0 0| 0 0 0 0|</strong>
<strong>21:01:20| 4261 12121 831 0| 0 71 0 91k| 0 89k| 593 576 12.0m 0 0 0| 0 0 0 0|</strong>
<strong>21:01:21| 4265 12117 841 0| 0 161 0 203k| 0 203k| 597 17 12.1m 0 0 0| 0 0 0 0|</strong>
<strong>^C</strong>
<strong>Exit Now...</strong>
其它监控项:
网络:./orzdba -n eth1 -rt -S /usr/local/mysql/mysql.sock
Mysql:./orzdba -mysql -rt-S /usr/local/mysql/mysql.sock
所以说orzdba基本监控了所有的mysql状态以及系统状态了,大家可以考虑在线上使用orzdba来监控线上mysql库
实时查看当前的processlist和full processlist;
可以查看mysql数据库实时运行的sql状况的工具,以前苦于通过show processlist/show full processlist抓取sql的同志们现在只要盯一盯屏幕就可以了,非常的方便,
安装:先进入cpan窗口,安装dbi、dbd,然后退出解压缩orztop.rar包即可使用
命令如下:
orztop -h=192.168.52.129 -P=3006 -u=orztop-p=orztop -t=1