這篇文章主要介紹了用percona-toolkit為MySQL收集系統和性能信息的教程,可以輕松地將服務器基本信息錄入數據庫,需要的朋友可以參考下
系統類工具 1. pt-diskstats
功能介紹:
是一個對GUN/LINUX的交互式監控工具
用法介紹:
pt-diskstats [OPTION...] [FILES]
為GUN/LINUX打印磁盤io統計信息,和iostat有點像,但是這個工具是交互式并且比iostat更詳細??梢苑治鰪倪h程機器收集的數據。
使用示例:
范例1:查看本機所有的磁盤的狀態情況:
- pt-diskstats
范例2:只查看本機sda2磁盤的狀態情況
- pt-diskstats --devices-regex sda2
2. pt-fifo-split
功能介紹:
模擬切割文件并通過管道傳遞給先入先出隊列而不用真正的切割文件
用法介紹:
pt-fifo-split [options] [FILE ...]
pt-fifo-split讀取大文件中的數據并打印到fifo文件,每次達到指定行數就往fifo文件中打印一個EOF字符,讀取完成以后,關閉掉fifo文件并移走,然后重建fifo文件,打印更多的行。這樣可以保證你每次讀取的時候都能讀取到制定的行數直到讀取完成。注意此工具只能工作在類unix操作系統。這個程序對大文件的數據導入數據庫非常有用,具體的可以查看http://www.mysqlperformanceblog.com/2008/07/03/how-to-load-large-files-safely-into-innodb-with-load-data-infile/。
使用示例:
范例1:一個每次讀取一百萬行記錄的范例:
- pt-fifo-split --lines 1000000 hugefile.txt
- while [ -e /tmp/pt-fifo-split ]; do cat /tmp/pt-fifo-split; done
范例2:一個每次讀取一百萬行,指定fifo文件為/tmp/my-fifo,并使用load data命令導入到mysql中:
- pt-fifo-split infile.txt --fifo /tmp/my-fifo --lines 1000000
- while [ -e /tmp/my-fifo ]; do
- mysql -e "set foreign_key_checks=0; set sql_log_bin=0; set unique_checks=0; load data local infile '/tmp/my-fifo' into table load_test fields terminated by '/t' lines terminated by '/n' (col1, col2);"
- sleep 1;
- done
3. pt-summary
功能介紹:
友好地收集和顯示系統信息概況,此工具并不是一個調優或者診斷工具,這個工具會產生一個很容易進行比較和發送郵件的報告。
用法介紹:
- pt-summary
原理:此工具會運行和多命令去收集系統狀態和配置信息,先保存到臨時目錄的文件中去,然后運行一些unix命令對這些結果做格式化,最好是用root用戶或者有權限的用戶運行此命令。
使用示例:
范例1:查看本地系統信息概況
- pt-summary
4. pt-stalk
功能介紹:
出現問題的時候收集mysql的用于診斷的數據
用法介紹:
pt-stalk [OPTIONS] [-- MYSQL OPTIONS]
pt-stalk等待觸發條件觸發,然后收集數據幫助錯誤診斷,它被設計成使用root權限運行的守護進程,因此你可以診斷那些你不能直接觀察的間歇性問題。默認的診斷觸發條件為SHOW GLOBAL STATUS。也可以指定processlist為診斷觸發條件 ,使用--function參數指定。
使用示例:
范例1:指定診斷觸發條件為status,同時運行語句超過20的時候觸發,收集的數據存放在/tmp/test目錄下:
- pt-stalk --function status --variable Threads_running --threshold 20 --dest /tmp/test -- -uroot -pzhang@123 -h192.168.3.135
范例2:指定診斷觸發條件為processlist,超過20個狀態為statistics觸發,收集的數據存放在/tmp/test目錄下:
- pt-stalk --function processlist --variable State --match statistics --threshold 20 --dest /tmp/test -- -uroot -pzhang@123 -h192.168.3.135
貼一下達到觸發條件以后收集的信息:
- 2012_06_04_17_31_49-df
- 2012_06_04_17_31_49-disk-space
- 2012_06_04_17_31_49-diskstats
- 2012_06_04_17_31_49-hostname
- 2012_06_04_17_31_49-innodbstatus1
- 2012_06_04_17_31_49-innodbstatus2
- 2012_06_04_17_31_49-interrupts
- 2012_06_04_17_31_49-log_error
- 2012_06_04_17_31_49-lsof
- 2012_06_04_17_31_49-meminfo
- 2012_06_04_17_31_49-mutex-status1
- 2012_06_04_17_31_49-mysqladmin
- 2012_06_04_17_31_49-netstat
- 2012_06_04_17_31_49-netstat_s
- 2012_06_04_17_31_49-opentables1
- 2012_06_04_17_31_49-opentables2
- 2012_06_04_17_31_49-output
- 2012_06_04_17_31_49-pmap
- 2012_06_04_17_31_49-processlist
- 2012_06_04_17_31_49-procstat
- 2012_06_04_17_31_49-procvmstat
- 2012_06_04_17_31_49-ps
- 2012_06_04_17_31_49-slabinfo
- 2012_06_04_17_31_49-sysctl
- 2012_06_04_17_31_49-top
- 2012_06_04_17_31_49-trigger
- 2012_06_04_17_31_49-variables
- 2012_06_04_17_31_49-vmstat
- 2012_06_04_17_31_49-vmstat-overall
性能類工具 1. pt-index-usage
功能介紹:
從log文件中讀取插敘語句,并用explain分析他們是如何利用索引。完成分析之后會生成一份關于索引沒有被查詢使用過的報告。
用法介紹:
pt-index-usage [OPTION...] [FILE...]
可以直接從慢查詢中獲取sql,FILE文件中的sql格式必須和慢查詢中個是一致,如果不是一直需要用pt-query-digest轉換一下。也可以不生成報告直接保存到數據庫中,具體的見后面的示例
使用示例:
從滿查詢中的sql查看索引使用情況范例:
- pt-index-usage /data/dbdata/localhost-slow.log --host=localhost --user=root --password=zhang@123
將分析結果保存到數據庫范例:
- pt-index-usage /data/dbdata/localhost-slow.log --host=localhost --user=root --password=zhang@123 --no-report --create-save-results-database
使用--create-save-results-database會自動生成數據庫和表來保存結果。
2. pt-pmp
功能介紹:
為查詢程序執行聚合的GDB堆棧跟蹤,先進性堆棧跟蹤,然后將跟蹤信息匯總。
用法介紹:
pt-pmp [OPTIONS] [FILES]
使用示例:
- pt-pmp -p 21933
- pt-pmp -b /usr/local/mysql/bin/mysqld_safe
3. pt-visual-explain
功能介紹:
格式化explain出來的執行計劃按照tree方式輸出,方便閱讀。
用法介紹:
pt-visual-explain [OPTION...] [FILE...]
option請參閱官方網站,這里不一一例舉!
使用示例:
查看包含explain結果的aaa文件的范例:
- pt-visual-explain aaa
查看包含查詢語句的aaa文件的范例:
- pt-visual-explain --connect aaa --user=root --password=zhang@123
通過管道直接查看explain輸出結果的范例:
- mysql -uroot -pzhang@123 -e "explain select email from test.collect_data where id=101992419" |pt-visual-explain
新聞熱點
疑難解答