首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Percona Toolkit 安裝與核心功能速查:pt-duplicate-key-checker、pt-online-schema-change、pt-query-advisor 等

     編輯:MySQL 資料庫相關知識

安裝指南 (CentOS 5.5 x64 示例)

1. 下載

wget https://www.percona.com/redir/downloads/percona-toolkit/2.1.1/percona-toolkit-2.1.1-1.noarch.rpm
wget https://pkgs.repoforge.org/perl-TermReadKey/perl-TermReadKey-2.30-1.el5.rf.x86_64.rpm

2. RPM 安裝 (推薦)

rpm -ivh perl-TermReadKey-2.30-1.el5.rf.x86_64.rpm
rpm -ivh percona-toolkit-2.1.1-1.noarch.rpm

依賴 perl(Term::ReadKey) >= 2.10,缺失會報錯。

3. 源碼編譯安裝

tar xzvf percona-toolkit-2.1.1.tar.gz
cd percona-toolkit-2.1.1
perl Makefile.PL
make && make test && make install

六大類工具速覽

  • 開發類:pt-query-advisor、pt-show-grants、pt-upgrade
  • 性能類:pt-index-usage、pt-pmp、pt-visual-explain
  • 配置類:pt-config-diff、pt-variable-advisor
  • 監控類:pt-heartbeat、pt-query-digest、pt-deadlock-logger
  • 復制類:pt-table-checksum、pt-table-sync、pt-slave-delay
  • 系統類:pt-diskstats、pt-stalk、pt-summary
  • 實用類:pt-archiver、pt-find、pt-kill、pt-duplicate-key-checker、pt-online-schema-change

高頻實用工具深度實戰

1. pt-duplicate-key-checker:重複索引/外鍵檢測清理

pt-duplicate-key-checker --host=localhost --user=root --password=zhang@123 --databases=test

輸出:列出重複索引定義、生成 DROP INDEX 語句,一鍵優化索引冗餘。

2. pt-online-schema-change:大表無鎖結構變更(神器)

原理:建影子表 → 修改結構 → 分塊拷貝數據 → 建觸發器同步增量 → 原子切換表名 → 刪舊表。

前提:表無觸發器、有主鍵/唯一索引。操作前必備份,官方文檔必讀。

關鍵參數

  • --dry-run:僅建影子表驗證,不拷貝數據、不建觸發器、不切換。
  • --execute:真正執行(無此參數僅做檢查退出)。
  • --alter:DDL 子句(如 ENGINE=InnoDB、ADD COLUMN ...)。
  • --lock-wait-time:獲取元數據鎖超時時間。

實戰範例

# 大表轉 InnoDB
pt-online-schema-change --user=root --password=zhang@123 --host=localhost --lock-wait-time=120 --alter="ENGINE=InnoDB" D=test,t=oss_pvinfo2 --execute

# 大表加字段
pt-online-schema-change --user=root --password=zhang@123 --host=localhost --lock-wait-time=120 --alter="ADD COLUMN domain_id INT" D=test,t=oss_pvinfo2 --execute

日志輸出清晰記錄各階段:Creating new table... Altering... Creating triggers... Copying... Swapping... Dropping old table... Dropping triggers...

3. pt-query-advisor:SQL 靜態審查顧問(基於規則庫)

分析慢查詢/General Log/TCP 抓包中的 SQL,按預置規則報警(如 SELECT *、隱式類型轉換、無索引 JOIN 等)。注意:大文件分析存在性能 Bug(死循環),謹慎用於超大日志。

# 分析單條 SQL
pt-query-advisor --query "SELECT * FROM aaa"

# 分析 General Log
pt-query-advisor /data/dbdata/general.log

# 分析慢查詢
pt-query-advisor /data/dbdata/localhost-slow.log

4. pt-show-grants:權限導出/對比/版本控制利器

# 導出所有用戶權限 (標準化格式)
pt-show-grants --host=localhost --user=root --password=zhang@123

# 導出指定庫權限
pt-show-grants --host=localhost --user=root --password=zhang@123 --database=hostsops

# 生成 REVOKE 收回語句
pt-show-grants --host=localhost --user=root --password=zhang@123 --revoke

5. pt-upgrade:跨版本/實例查詢行為一致性驗證

在新舊實例並行執行同一組 SQL,對比結果集/錯誤/警告/耗時,升級驗收必備。

# 單條 SQL 對比
pt-upgrade h=localhost h=192.168.3.92 --user=root --password=zhang@123 --query="SELECT * FROM user_data.collect_data LIMIT 5"

# 文件批量對比
pt-upgrade h=localhost h=192.168.3.92 --user=root --password=zhang@123 aaa.sql

# 慢查詢文件對比
pt-upgrade h=localhost h=192.168.3.92 --user=root --password=zhang@123 slow.log

# 僅對比執行時間
pt-upgrade h=192.168.3.91 h=192.168.3.92 --user=root --password=zhang@123 --query="SELECT * FROM user_data.collect_data" --compare query_times
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved