您好,登錄后才能下訂單哦!
pt(Percona Toolkit)工具介紹
一.介紹
1.找出重復的索引和外鍵
pt-duplicate-key-checker
例子:[root@node1 ~]# 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
例子:[root@node1 ~]# 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秒的連接.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。