【MySQL】percona-toolkit工具包
【說明】
percona-toolkit工具包同percona-xtrabackup一樣都是用Perl寫的工具包,percona-toolkit工具包是一組高級的管理mysql的工具包集,可以用來執行各種通過手工執行非常復雜和麻煩的mysql和系統任務,在生產環境中能極大的提高效率,安裝也很簡單,可以在percona的官網:https://www.percona.com上下載編譯包或者是rpm包。
【安裝】
一.檢查和安裝Perl依賴包
percona工具是使用Perl語言編寫和執行的,所以需要系統中要有Perl依賴包。依賴包檢查命令為:
rpm -qa perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL
如果機器上沒有依賴包,安裝
yum install perl-DBI yum install perl-DBD-MySQL yum install perl-Time-HiRes yum install perl-IO-Socket-SSL
二.下載安裝percona toolkit包
1、下載和安裝percona toolkit的包
參照:https://www.percona.com/doc/percona-toolkit/3.0/installation.html#installing-percona-toolkit-on-red-hat-or-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操作阻塞會影響查詢、主從同步的問題。pt-online-schema-change工具,會先新建立一個要改變後的表,然後分批拷貝原表數據到新表中,不會影響原表使用。完全同步後,重命名新表,更安全的在線執行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死鎖信息 |
常用 |
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新增命令 |
【MySQL】percona-toolkit工具包