MySQL 瑞士軍刀

itlouhao發表於2015-04-20

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的用於診斷的資料

orzdbaPerl指令碼,用於對Linux主機和MySQL相關指標進行實時監控。

 

 

 

2vmstat工具

透過yum方式安裝sysstatyum -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  1 434092  83364 133292 207336    0    2     9    25   33   47  0  0 99  1  0 

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

 2  0 434092  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:看得比較多的引數依次是,最基本的(swpdfreebuffcache)、記憶體讀寫(siso)、cpu方面(incs);cs需要經常關注,它是上下文切換的,尤其是我們單機執行緒數非常多的時候,就會產生大量的上下文切換,而cpu去不斷的上下文切換本身就非常消耗資源,比如你的執行任務被頻繁切換來切換去沒有實際被執行。

 

3iostat工具

vmstat一樣,透過yum方式安裝sysstatyum -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-szawaitsvctm

 

4mpstat工具

另一個用於獲取 CPU 相關統計資訊的有用的命令是 mpstat

透過yum方式安裝sysstatyum -y install sysstat),就可以使用mpstat

4.1 樣例

 [root@data01 ~]# mpstat  -P ALL 2 2
Linux 2.6.32-220.el6.x86_64 (data01)     20150403    _x86_64_  (2 CPU)
 
231143  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
231145  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
231145    0    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00   99.50
231145    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 
231145  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
231147  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
231147    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
231147    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 資料庫效能問題非常方便。

 

5ifstat工具

檢視網路流量的小工具

5.1下載安裝

下載 ifstat安裝包:,  wegt

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

 

6dstat工具

dstat是一個用來替換 vmstat,iostat netstat,nfsstat和ifstat這些命令的工具, 是一個全能系統資訊統計工具. 與sysstat相比, dstat擁有一個彩色的介面, 在手動觀察效能狀況時, 資料比較顯眼容易觀察; 而且dstat支援即時重新整理, 譬如輸入dstat 3, 即每三秒收集一次, 但最新的資料都會每秒重新整理顯示. 和sysstat相同的是, dstat也可以收集指定的效能資源, 譬如 dstat -c 即顯示CPU的使用情況.


可以去Contos和Redhat的下載連結:下載rpm安裝包安裝;也可以使用yum安裝:yum install -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

 

 

7tcprstat工具

檢查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伺服器上面

 
# 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

 

8tcpdump

抓包工具,可以擷取到客戶端對mysql資料庫伺服器的所有請求操作。

8.1簡介

系統自帶的工具包,如果沒有的話,就使用yum安裝(yum install –y tcpdump)用簡單的話來定義tcpdump,就是:dump the traffic on a network,根據使用者的定義對網路上的資料包進行截獲的包分析工具。 tcpdump可以將網路中傳送的資料包的“頭”完全截獲下來提供分析。它支援針對網路層、協議、主機、網路或埠的過濾,並提供andornot等邏輯語句來幫助你去掉無用的資訊。

 

透過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.xxx and port 3306 |strings 

 

8.2 使用

透過如下命令來監控192.168.52.129伺服器mysql當前所執行的一切操作

tcpdump -i eth1 -s 0 -l -w - dst 192.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產生的資訊比較多,大家可以自己做擴充套件過濾出自己需要的資訊記錄。

 

9perf工具

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

 

10pt-stalk

工具下載:

wget

 

安裝:

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

   cd percona-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 --function status --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來抓取這些現場的所有行為,來幫助你分析查詢。

 

11orzdba

安裝請參考:

先需要安裝svn客戶端以及tcprstatyum安裝即可:yum install -y svn;yum install -y tcprstat;

然後下載orzdba包:

svn co

cd trunk/

chmod a+x orzdba

 

大概包括Sysmysqlinnodblazy 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裡面的datafreedirty等,非常全的資訊,大家可以作為非常重要的參考,命令如下:

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

參考:

參考:

12,orztop

實時檢視當前的processlistfull processlist;

可以檢視mysql資料庫實時執行的sql狀況的工具,以前苦於透過show processlist/show full processlist抓取sql的同志們現在只要盯一盯螢幕就可以了,非常的方便,

 

下載:wget

安裝:先進入cpan視窗,安裝dbidbd,然後退出解壓縮orztop.rar包即可使用

 

命令如下:

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

----------------------------------------------------------------------------------------------------------------

原部落格地址: http://blog.itpub.net/26230597/viewspace-1501700/
原作者:黃杉 (mchdba)
----------------------------------------------------------------------------------------------------------------

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30215233/viewspace-1586606/,如需轉載,請註明出處,否則將追究法律責任。

相關文章