天天看點

pt(Percona Toolkit)工具詳解:(二)工具介紹

之是以先寫介紹,那是因為太多工具,要查起來非常麻煩,要先做個彙總介紹,友善查找.

介紹

1.找出重複的索引和外鍵

    pt-duplicate-key-checker

這個工具會将重複的索引和外鍵都列出來,并生成了删除重複索引的語句,非常友善

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

    pt-online-schema-change

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

3.分析日志記錄裡面的sql或者直接整條sql,并提出建議

    pt-query-advisor

實際意義不大,對于分析大檔案容易出現卡死.

4.格式化顯示mysql權限

    pt-show-grants

實際意義不大,主要是比較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秒的連接配接.

     本文轉自arthur376 51CTO部落格,原文連結:http://blog.51cto.com/arthur376/1893321,如需轉載請自行聯系原作者