簡書不維護了,歡迎關注我的知乎:波羅學的個人主頁
PerconaToolkits是基于MySQL常見使用場景并由percona開發出來的一套數據庫管理優化的命令行工具集。本篇文章會在介紹該工具的安裝過程,并在此基礎上簡要說明各個命令的主要用途。
實驗的環境:CentOS 7.1 + Percona Server 5.6.34
簡要介紹
PerconaToolKit是Percona為MySQL分支版本Percona開發的一套工具集,將過去那些常用繁重的手工執行的操作總結起來組織開發的一套工具。這些工具很多功能都同時適用于MySQL(官方)和MySQL(Percona版)的。
列舉一些我們平時比較關心的功能:
分析索引使用情況;檢查分析重復索引;獲取用來分析事故現場的信息;統計分析查詢性能問題;匯總服務配置狀態等信息;實現不加鎖修改表結構;檢查master和slave的數據一致性 等等。
這些在工具集都有涉及,整套工具共有32個命令,涉及到了MySQL操作的方方面面。
如何安裝
關于PerconaToolKit安裝,Percona官網中針對不同系統都提供了針對性的方案。這里主要介紹centos7的兩種安裝方法:RPM和通用包。
RPM方式
此種方式優點在于yum可以幫助我們自動處理依賴關系。
$ wget percona.com/get/percona/percona-toolkit.rpm
$ yum install percona-toolkit
通用包方式
比較簡單,只需將別人已打包好的可執行文件解壓到相應目錄即可使用。不同于RPM,這里的依賴包需自己手動解決。
本人遇到的系統依賴包有如下這些,可直接使用yum安裝:
$ yum install -y perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-TermReadKey perl-Digest-MD5
下載并解壓安裝,三步三條命令,如下:
$ wget percona.com/get/percona-toolkit.tar.gz
$ tar zxvf percona.tar.gz -C /usr/local/percona-toolkit
$ ln -s percona-toolkit-2.2.20/ percona-toolkit
配置環境變量并執行source命令使環境變量生效:
$ vim /etc/profile.d/percona-toolkit.sh
PATH=/usr/local/percona-toolkit/bin:$PATH
export PATH
$ source /etc/profile.d/percona-toolkit.sh
PerconToolkit到此安裝結束,不是太復雜。
命令介紹
PerconaToolkit提供了相當多的命令,每個命令都有其特定使用場景。我們可以進入到/usr/local/percona-toolkit/bin目錄下查看。這里先對每個命令做簡單的介紹。
pt-index-usage 檢查數據庫索引使用情況;
pt-slave-find 查找打印mysql主從服務器關系樹;
pt-archiver 可用于清理與歸檔數據;
pt-ioprofile 查看進程IO,打印表文件及其IO活動;
pt-slave-restart 監控一個或多個從服務器,停止則自動重啟;
pt-config-diff 快速比較MySQL配置,支持文件與服務器比較方式;
pt-kill 可以根據一定規則kill連接,如查詢超過10秒的連接;
pt-stalk 出現問題時自動觸發數據收集,規則自定義,如連接數大于某值觸發;
pt-sift 用于瀏覽pt-stalk收集問題診斷數據
pt-deadlock-logger 導出記錄死鎖信息,當期只有Innodb死鎖信息可用
pt-mext 多次采集變量數據,在同一行進行展示,便于數據比較
pt-summary 收集系統摘要信息,如CPU、內存、硬盤和網卡等等各種系統信息
pt-diskstats 一個交互式的I/O監控工具
pt-mysql-summary 匯總MySQL各種信息,如版本、命令統計、用戶、變量等信息;
pt-table-checksum 可用于驗證數據庫主從數據的完整性一致性;
pt-duplicate-key-checker 可用于檢查表中的重復索引,提供索引使用效率;
pt-online-schema-change 可用于無鎖定修改表結構,減少對生產環境業務的影響;
pt-table-sync 實現快速高效同步表數據,可用來修復pt-table-checksum的錯誤表;
pt-fifo-split 模擬分隔文件,多次傳遞給FIFO,非正真切割。對大文件導入非常有用;
pt-pmp 選中程序獲取GDB堆棧信息,并進行匯總
pt-table-usage 分析查詢如何使用以及涉及哪些表,如一次查詢更新,查詢以及關聯等;
pt-find 根據指定條件查詢MySQL相關表和操作,如查找所有創建超過一天的表或者查找所有更改InnoDb表結構的操作等,與linux的find很相似;
pt-query-digest 查詢性能分析利器,可通過慢查詢日志,processlist信息和tcpdump抓包數據匯總查詢數據,幫助我們分析;
pt-fingerprint 獲取sql語句指紋,例如select name from user where id = 1指紋就是 select name from user where id = ?上面的pt-query-digest也是按類此方式進行分組匯總的;
pt-upgrade 可用于驗證不同服務器上的查詢結果或者日志是否相同;
pt-show-grants 規范化和打印mysql權限信息,讓復制、比較mysql權限,而且還可以進行版本控制;
pt-variable-advisor 分析MySQL的變量,并就其可能出現的問題給出建議;
pt-fk-error-logger 可用于獲取和記錄MySQL外鍵的錯誤信息;
pt-visual-explain 格式化輸出explain分析結果,以樹狀形式展示;
pt-heartbeat 可用于檢測主從延遲時間;
pt-slave-delay 可實現從庫延遲復制,防止某些錯誤操作主庫執行,從庫也立即執行;
pt-align 可用來對齊美化其他工具的輸出,編者感覺用處不大;
32個命令介紹結束,想了解更多內容,可以查閱官方手冊。