首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Percona Toolkit 核心工具實戰:安裝、DDL 在線變更、索引檢查、權限管理、版本升級驗證

     編輯:MySQL 綜合教學

Percona Toolkit 核心工具實戰:安裝、DDL 在線變更、索引檢查、權限管理、版本升級驗證

Percona Toolkit(原 Maatkit/Aspersa)是 MySQL 運維必備的高級命令行工具集,涵蓋開發、性能、配置、監控、復制、系統六大類。本文聚焦五大高頻工具:pt-duplicate-key-checker、pt-online-schema-change、pt-query-advisor、pt-show-grants、pt-upgrade,從原理到實戰示例全方位解析。

一、安裝部署(CentOS 5.5 x64 示例)

# 下載 RPM 包
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
# 安裝依賴與主包
rpm -ivh perl-TermReadKey-2.30-1.el5.rf.x86_64.rpm
rpm -ivh percona-toolkit-2.1.1-1.noarch.rpm

源碼編譯安裝同樣適用:perl Makefile.PL && make && make test && make install。

二、pt-duplicate-key-checker:重複索引/外鍵清理

功能:掃描表結構,列出冗余索引與外鍵,自動生成 DROP INDEX 語句。

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

三、pt-online-schema-change:無鎖在線 DDL 變更

原理:建影子表 → 修改結構 → 建觸發器同步增量 → 分塊拷貝數據 → 切換表名 → 清理。全程不阻塞讀寫,前提:表無觸發器。

關鍵參數:--dry-run 只建表不拷貝;--execute 真實執行(必加,否則退出)。

# 在線修改引擎為 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

四、pt-query-advisor:SQL 質量自動審核

功能:基於預定義規則集(官方文檔)分析慢查詢/General Log/TCPdump 抓包的 SQL,輸出優化建議。注意:大日志文件可能觸發性能問題/死循環。

# 分析單條 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

五、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

六、pt-upgrade:跨版本 SQL 行為一致性驗證

場景:MySQL 升級前,對比新舊實例執行結果差異(結果集、錯誤、警告、耗時)。

# 對比單條 SQL
pt-upgrade h=localhost h=192.168.3.92 --user=root --password=zhang@123 --query="select * from user_data.collect_data limit 5"
# 對比文件中所有 SQL
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