1. 程式人生 > >pt(Percona Toolkit)工具介紹

pt(Percona Toolkit)工具介紹

工具介紹 pt pt-toolkit

pt(Percona Toolkit)工具介紹


.介紹
1.找出重復的索引和外鍵

pt-duplicate-key-checker

例子:[[email protected] ~]# pt-duplicate-key-checker --user=root --password=‘abc123‘

# ########################################################################

# Summary of indexes

# ########################################################################

# Total Indexes 89


這個工具會將重復的索引和外鍵都列出來,並生成了刪除重復索引的語句,非常方便

2.執行alter的時候不會阻塞寫和讀取操作

pt-online-schema-change

非常有名的工具,工作原理是創建一個和你要執行alter操作的表一樣的空表結構,執行表結構修改,然後從原表中先創建一個觸發器,把新插入和更改的數據同步到新表,再copy原始數據到表結構修改後的表,當數據copy完成以後就會將原表移走,用新表代替原表,默認動作是將原表drop掉。所以,如果表中已經定義了觸發器這個工具就不能工作了。也要註意數據的備份問題.



3.分析日誌記錄裏面的sql或者直接整條sql,並提出建議

pt-query-advisor

實際意義不大,對於分析大文件容易出現卡死.

4.格式化顯示mysql權限

pt-show-grants

例子:[[email protected] ~]# pt-show-grants --user=root --password=‘abc123‘

實際意義不大,主要是比較mysql權限以及進行版本控制

5.在多臺服務器上執行查詢,並比較有什麽不同

pt-upgrade

這在升級服務器的時候非常有用,可以先安裝並導數據到新的服務器上,然後使用這個工具跑一下sql看看有什麽不同,可以找出不同版本之間的差異。



6.用explain分析sql如何利用索引並生成報告

pt-index-usage

可以直接從慢查詢中獲取sql,FILE文件中的sql格式必須和慢查詢中個是一致,如果不是一直需要用pt-query-digest轉換一下。也可以不生成報告直接保存到數據庫中

7.查詢程序執行聚合的GDB堆棧跟蹤並匯總

pt-pmp

看起來很復雜,其實屬於底層程序行為效率跟蹤

8.格式化explain出來的執行計劃按照tree方式輸出

pt-visual-explain

沒有實際意義,只是方便閱讀

9.比較mysql配置文件和服務器參數

pt-config-diff

最少必須指定兩個配置文件源,就像unix下面的diff命令一樣,如果配置完全一樣就不會輸出任何東西,有時候用來排除配置差異造成的問題.

10.對mysql的配置和sataus信息進行匯總

pt-mysql-summary

連接mysql後查詢出status和配置信息保存到臨時目錄中,然後用awk和其他的腳本工具進行格式化

11.分析mysql的參數變量並給出建議

pt-variable-advisor

實際意義有限,還是按自己需求來配置最實際,特別是多實例場景,這個建議毫無意義.

12.匯總mysql死鎖的相關信息

pt-deadlock-logger

收集和保存mysql上最近的死鎖信息,可以直接打印死鎖信息和存儲死鎖信息到數據庫中,死鎖信息包括發生死鎖的服務器、最近發生死鎖的時間、死鎖線程id、死鎖的事務id、發生死鎖時事務執行了多長時間等等非常多的信息,對於頻繁出現死鎖的情況,建議開一段時間來收集信息.

13.匯總mysql外鍵錯誤信息

pt-fk-error-logger

通過SHOW INNODB STATUS提取和保存mysql數據庫最近發生的外鍵錯誤信息。可以通過參數控制直接打印錯誤信息或者將錯誤信息存儲到數據庫的表中.然而現在很少用外鍵了,也不建議用外鍵.

14.查看SHOW GLOBAL STATUS的多個樣本的信息

pt-mext

實際意義不大,手動執行然後分析其實也不難.

15.分析sql日誌並生成報告,最後給出建議

pt-query-digest

很出名的工具,多用來分析統計慢查詢,也可以統計一般sql日誌,運行速度快,信息清晰.它可以分析binlog、General log、slowlog,也可以通過SHOW PROCESSLIST或者通過tcpdump抓取的MySQL協議數據來進行分析。可以把分析結果輸出到文件中,分析過程是先對查詢語句的條件進行參數化,然後對參數化以後的查詢進行分組統計,統計出各查詢的執行時間、次數、占比等,可以借助分析結果找出問題進行優化。

16.按時間統計sql日誌並生成報告

pt-trend

實際意義不大,例如:讀取本地慢查詢日誌並輸出統計信息.

17.監控mysql復制延遲

pt-heartbeat

會生成一個數據表,記錄延時時間,不過功能做得不是太好,如果沒有數據庫完全控制權或者網絡問題,還是慎用,容易造成數據不一致.

18.設置從服務器落後於主服務器指定時間

pt-slave-delay

建議不用,功能做得不好,容易搞掛主從結構,到時不得不重做主從就麻煩了.

19.查找和打印mysql所有從服務器復制層級關系

pt-slave-find

連接mysql主服務器並查找其所有的從,然後打印出所有從服務器的層級關系。

20.監視mysql復制錯誤,並嘗試重啟mysql復制

pt-slave-restart

監視一個或者多個mysql復制錯誤,當從停止的時候嘗試重新啟動復制。屬於監控相關

21.檢查mysql復制一致性

pt-table-checksum

很出名的工具,只需要在master上執行即可,通常總是和pt-table-sync協作。工作原理:pt-table-checksum在主上執行檢查語句在線檢查mysql復制的一致性,然後通過復制傳遞到從,再通過update更新master_src的值。通過檢測從上this_src和master_src的值從而判斷復制是否一致。最後把檢查報告寫到某個位置,等待pt-table-sync調用。根據原理來說,它對於binlog_format要求是Statement和Mixed才能正常使用,對於row模式來說,則會報錯不能使用。所以使用前要註意進行更改配置,set global binlog_format=STATEMENT來使用,不然就使用不了,運行完改回去就可以了。也要註意需要一定權限,最好用root.

22.同步mysql主從庫差異表的數據

pt-table-sync

很出名的工具,主從復制本身存在一些缺陷,在極端情況下會出現從庫多了數據,或者少了數據的情況,這個時候就需要人為修復,這個工具可以幫到我們。原理:通過pt-table-checksum得到的數據,列出或直接執行修改復制的差異數據,使其重新同步。總是在主上執行數據的更改,再同步到從上,不會直接更改成從的數據,在主上執行更改是基於主上現在的數據,不會更改主上的數據。註意使用之前先備份你的數據,避免造成數據的丟失.執行execute之前最好先換成--print或--dry-run查看一下會變更哪些數據。

23.磁盤io監控工具

pt-diskstats

iostat有點像,但是這個工具是交互式並且比iostat更詳細。也可以分析從遠程機器收集的數據。

24.模擬切割文件並通過管道傳遞給先入先出隊列

pt-fifo-split

實際用的不多,通過讀取大文件中的數據並打印到fifo文件,每次達到指定行數就往fifo文件中打印一個EOF字符,讀取完成以後,關閉掉fifo文件並移走,然後重建fifo文件,打印更多的行。這樣可以保證你每次讀取的時候都能讀取到制定的行數直到讀取完成。註意此工具只能工作在類unix操作系統。這個程序對大文件的數據導入數據庫非常有用,

25.顯示系統信息概況

pt-summary

此工具會運行和多命令去收集系統狀態和配置信息,先保存到臨時目錄的文件中去,然後運行一些unix命令對這些結果做格式化,最好是用root用戶或者有權限的用戶運行此命令。

26.收集mysql的用於診斷的數據

pt-stalk

遇到一些疑難雜癥的時候,可以拿來測試並獲取問題數據.原理:pt-stalk等待觸發條件觸發,然後收集數據幫助錯誤診斷,它被設計成使用root權限運行的守護進程,因此你可以診斷那些你不能直接觀察的間歇性問題。默認的診斷觸發條件為SHOW GLOBAL STATUS。也可以指定processlist為診斷觸發條件 ,使用--function參數指定。

27.將mysql數據庫中表的記錄歸檔到另外一個表或者文件

pt-archiver

這個工具只是歸檔舊的數據,不會對線上數據的OLTP查詢造成太大影響,你可以將數據插入另外一臺服務器的其他表中,也可以寫入到一個文件中,方便使用load data infile命令導入數據。另外你還可以用它來執行delete操作。這個工具默認的會刪除源中的數據。使用的時候請註意。

28.查找mysql表並執行指定的命令,和find命令類似。

pt-find

庫少的話用途不大,當你的庫很多,表也很多的時候,而又忘記了自己要查的表名的時候,還是挺有用的.

29.Kill掉符合指定條件mysql語句

pt-kill

加入沒有指定文件的話pt-kill連接到mysql並通過SHOW PROCESSLIST找到指定的語句,反之pt-kill從包含SHOW PROCESSLIST結果的文件中讀取mysql語句.例如:刪除運行超過60秒的連接.


本文出自 “Linux修仙之路” 博客,請務必保留此出處http://8999a.blog.51cto.com/11385098/1970309

pt(Percona Toolkit)工具介紹