pt-stalk 適用情境:
① MySQL Server 效能波動出現的
頻率
很低、例如、幾天一次
② MySQL Server 效能波動出現的
機率
很快、例如、幾秒閃過
㈠ 安裝
① 下載
http://www.percona.com/downloads/percona-toolkit/LATEST/
② 問題
MySQL RPM安裝的可能會遇到下面問題:
Warning: prerequisite DBD::mysql 3 not found.
Warning: prerequisite DBI 1.46 not found.
Writing Makefile for percona-toolkit
處理方法如下:
分 2 步:
⑴ 配置 percona 源:
http://www.percona.com/doc/percona-server/5.5/installation/yum_repo.html
# yum list | grep percona
# yum install Percona-Server-shared-compat-5.5.19-rel24.0.204.rhel5.i386.rpm
⑵ 安裝驅動
Perl DBD::mysql
下載:http://search.cpan.org/~capttofu/DBD-mysql-3.0007_2/
不過、這之前要先把 MySQL-devel-community 包給打上
㈡ 使用
例子:
[root@localhost ~]# pt-stalk --collect-tcpdump --function status \> --variable Threads_connected --threshold 2 \> --daemonize -- --user=root --password=oracle2013_04_10_15_15_34 PID file /var/run/pt-stalk.pid already exists and its PID (23950) is running
上面的命令表示,讓pt-stalk後台運行(--daemonize),並監視SHOW GLOBAL STATUS中的Threads_connected狀態值
如果該值超過2,則觸發收集主機和MySQL的效能、狀態資訊
pt-stalk會每隔一秒檢查一次狀態值,如果連續5次滿足觸發條件,則開始收集
--collect-tcpdump表示除了收集基本資料外,還將額外使用tcpdump收集當時的網路包
類似的還可以使用--collect-gdb等
㈢ 查看 pt-stalk 的工作狀態
pt-stalk是一個背景程式,預設我們可以通過檔案/var/log/pt-stalk.log,查看pt-stalk的運行狀態:
[root@localhost ~]# tail -f /var/log/pt-stalk.log2013_04_10_15_14_33 Starting /usr/bin/pt-stalk --function=status --variable=Threads_connected --threshold=2 --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=2013_04_10_15_14_33 Check results: Threads_connected=4, matched=yes, cycles_true=12013_04_10_15_14_34 Check results: Threads_connected=4, matched=yes, cycles_true=22013_04_10_15_14_35 Check results: Threads_connected=4, matched=yes, cycles_true=32013_04_10_15_14_36 Check results: Threads_connected=4, matched=yes, cycles_true=42013_04_10_15_14_37 Check results: Threads_connected=4, matched=yes, cycles_true=52013_04_10_15_14_37 Collect 1 triggered2013_04_10_15_14_37 Collect 1 PID 240222013_04_10_15_14_37 Collect 1 done2013_04_10_15_14_37 Sleeping 300 seconds after collect
你還可以通過參數--log指定一個你希望的log目錄和檔案
㈣ pt-stalk收集的效能和狀態資料存放處
預設pt-stalk將收集的資料放在目錄/var/lib/pt-stalk下,你可以使用參數--dest指定你希望的目錄
這些資料都是未經處理資料,我們可以根據這些來分析當時MySQL或者主機是否有異常
㈤ pt-stalk的觸發條件
在上面的樣本中觸發參數是:"--function status --variable Threads_connected --threshold 2"
表示MySQL狀態值Threads_connected超過2時觸發資料收集。常用的觸發條件還可以使用Threads_running等
另外還可以使用SHOW PROCESSLIST的中的結果觸發
例如"--function processlist --variable State --match statistics --threshold 10"表示
show processlist中State列的值為statistics的線程數超過10則觸發收集
更多方法、請 man pt-stalk