percona-toolkit工具包是一組高級的管理mysql的工具包集,能夠用來執行各類經過手工執行很是複雜和麻煩的mysql和系統任務,下載和安裝都很簡單https://www.percona.com。生產環境中使用過其中若干工具,極大的提升效率且解決了遇到的問題,特此整理一下備忘,同時推薦使用。html
一.檢查和安裝Perl依賴包mysql
percona工具是使用Perl語言編寫和執行的,因此須要系統中要有Perl依賴包。依賴包檢查命令爲:ios
rpm -qa perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL
若是機器上沒有依賴包,安裝sql
yum install perl-DBI yum install perl-DBD-MySQL yum install perl-Time-HiRes yum install perl-IO-Socket-SSL
二.下載安裝percona toolkit包數據庫
一、下載和安裝percona toolkit的包centos
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
2.安裝percona-toolkit工具包安全
yum install percona-toolkit
安裝成功,最後有「Complete!」
服務器
分類工具 |
工具命令 |
工具做用 |
備註 |
開發類 |
pt-duplicate-key-checker |
列出並刪除重複的索引和外鍵 |
|
pt-online-schema-change |
在線修改表結構 |
經常使用。 InndoDB有部分語句不支持在線DDL,大表DDL操做阻塞會影響查詢、主從同步等問題。 該工具,會先新創建一個要改變後的表,而後分批拷貝原表數據到新表中,不會影響原表使用。徹底同步後,重命名新表,更安全的在線執行DDL。 /usr/local/bin/pt-online-schema-change --user=用戶名 --password=密碼 --host=數據庫IP --port=端口號 --charset=utf8mb4 --nodrop-old-table --alter="sql語句片斷,例如add column xxfieldname' " D=ad_api,t=t_ad_req_log --exec |
|
pt-query-advisor |
分析查詢語句,並給出建議,有bug |
已廢棄 |
|
pt-show-grants |
規範化和打印權限 |
經常使用。 可導出create user和grant受權語句,遷移數據庫帳號時使用 |
|
pt-upgrade |
在多個服務器上執行查詢,並比較不一樣 |
||
性能類 |
pt-index-usage |
分析日誌中索引使用狀況,並出報告 |
|
pt-pmp |
爲查詢結果跟蹤,並彙總跟蹤結果 |
||
pt-visual-explain |
格式化執行計劃tree方式輸出 |
||
pt-table-usage |
分析日誌中查詢並分析表使用狀況 |
pt 2.2新增命令 |
|
配置類 |
pt-config-diff |
比較配置文件和參數 |
經常使用。 MySQL8以前,在線set變量不支持persist,若是忘記在配置文件中同步修改,MySQL重啓後會讀取配置文件中的老變量致使出現問題。pt-config-diff工具能夠比較當前在線變量和配置文件變量的差別,經常使用。 |
pt-mysql-summary |
對mysql配置和status進行彙總 |
精細地對 mysql 的配置和 sataus 信息進行彙總 | |
pt-variable-advisor |
分析參數,並提出建議 |
||
監控類 |
pt-deadlock-logger |
提取和記錄mysql死鎖信息 |
經常使用。死鎖信息記錄,使用方法: 1.set global innodb_print_all_deadlocks=on; 2.pt-deadlock-logger u=dba,p=密碼,h=數據庫ip --create-dest-table --dest u=dba,p=密碼,h=數據庫ip,D=crn,t=deadlock |
pt-fk-error-logger |
提取和記錄外鍵信息 |
||
pt-mext |
並行查看status樣本信息 |
||
pt-query-digest |
分析查詢日誌,併產生報告 |
經常使用命令,慢查詢日誌分析工具 |
|
pt-trend |
按照時間段讀取slow日誌信息 |
已廢棄 |
|
複製類 |
pt-heartbeat |
監控mysql複製延遲 |
經常使用。主從延遲監控。 show slave status \G;查看Seconds_behind_Master參數是基於slave生成的relaylog與master時間差值,並不許確。例如執行一個大事務,主從延遲已發生,但relaylog還未生成。 pt-heartbeat工具能夠規避該問題,使用的是Master後臺週期寫入,slave後臺週期讀取的方式。 pt-heartbeat --user=用戶名 --password=密碼 -h master --createtable --database 監測庫名 --update --daemonize --interval 週期秒數 pt-heartbeat --user=用戶名 --password=密碼 -h slave --database crn --monitor--daemonize --log 監控日誌路徑和名稱 |
pt-slave-delay |
設定從落後主的時間 |
||
pt-slave-find |
查找和打印全部mysql複製層級關係 |
||
pt-slave-restart |
監控salve錯誤,並嘗試重啓salve |
監控一個或者多個MySQL複製slave,試圖跳過引發錯誤的語句。以指數變化的睡眠時間智能檢查slave。能夠指定要跳過的錯誤而後運行slave,一直到一個肯定的binlog位置。一旦檢測到slave有錯誤就會打印一行。默認打印:時間戳、鏈接信息、relay_log_file,relay_log_pos,last_errno。 | |
pt-table-checksum |
校驗主從複製一致性 |
經常使用。判斷主從是否同步。 在主庫上執行校驗,而後對複製的一致性進行檢查,來對比主從之間的校驗值,並輸出對比結果。 |
|
pt-table-sync |
高效同步表數據 |
經常使用。修復主從同步不一致 pt-table-sync --replicate=test.checksums h=MasterIP,u=Master用戶名,p=Master密碼,P=Master端口 h=SlaveIP,u=Slave用戶名,p=Slave密碼,P=Slave端口 --print |
|
系統類 |
pt-diskstats |
查看系統磁盤狀態 |
打印磁盤 io 統計信息,比 iostat 輸出更細 |
pt-fifo-split |
模擬切割文件並輸出 |
||
pt-summary |
收集和顯示系統概況 |
||
pt-stalk |
出現問題時,收集診斷數據 |
||
pt-sift |
瀏覽由pt-stalk建立的文件 |
pt 2.2新增命令 |
|
pt-ioprofile |
查詢進程IO並打印一個IO活動表 |
pt 2.2新增命令 |
|
實用類 |
pt-archiver |
將表數據歸檔到另外一個表或文件中 |
|
pt-find |
查找表並執行命令 |
||
pt-kill |
Kill掉符合條件的sql |
經常使用命令 | |
pt-align |
對齊其餘工具的輸出 |
pt 2.2新增命令 |
|
pt-fingerprint |
將查詢轉成密文 |
pt 2.2新增命令 |