MySQL的瑞士軍刀

這裏主要講mysql運維中的一些主要工具,這些工具可能你們都用過,特別是系統管理員或者作linux服務器維護的同窗可能都知道這些小工具,這裏講得會比較多一些,除了系統監控的小工具,還包括一些mysql的工具,甚至深刻一些的工具也會講到,重點是你們聽完了後,必定要去本身動手實踐一下,這樣纔有意義,熟能生巧。html

 

光據說過是不行的,還得都要去實踐,實踐出真知,面試過不少朋友,問他們他們都說知道用過,可是細問下他們都關注哪些重要的點,他們就說得比較模糊,這樣是不行的,這樣會被別人一種感受,就是你不專業,咱們作技術的,必定要專業,特別是這些工具,要在實踐過程當中造成本身獨有的見解和理解。mysql

 

1,大概會講述的內容

vmstat/iostat/mpstat/ifstat/dstat : stat類,查看系統情況,linux

pstack:此命令可顯示每一個進程的棧跟蹤。pstack 命令必須由相應進程的屬主或 root 運行。可使用 pstack 來肯定進程掛起的位置。對內核和源碼有研究的人來講,這個仍是相對比較容易理解的。ios

 

測試的時候使用下面來模擬product情況,壓力測試:nginx

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

 

參考:http://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.htmlgithub

tcprstat:tcprstat是免費開源tcp分析工具,經過監控網絡傳輸來統計分析請求的響應時間web

參考:http://blog.csdn.net/wyzxg/article/details/8493658面試

 

tcpdump:抓包工具sql

參考: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次:

 [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去不斷的上下文切換自己就很是消耗資源,好比你的執行任務被頻繁切換來切換去沒有實際被執行。

 

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

 [root@data01 ~]# 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
[root@data01 ~]#

 

它顯示了系統中 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 測試查看檢測結果

[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

 

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,以下所示

 [root@data01 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
[root@data01 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運行次數

 [root@wgq_idc_dbm_3_61 ~]# chmod a+x tcprstat 
[root@wgq_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
[root@wgq_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查看參數信息:

[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 

 

8.2 使用

經過以下命令來監控192.168.52.129服務器mysql當前所執行的一切操做

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

 [root@data01 ~]# 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
V68@
select * from user_db.UC_USER
469@
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
46=@
 UfN
D6>@
show tables
46?@
S6@@
select * from table_myisam"
 UPs
46A@

 

 從中能夠看出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

 [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
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...
 
[root@data01 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

相關文章
相關標籤/搜索