Percona Toolkit 還包含六大「瑞士軍刀」級工具:pt-archiver 數據歸檔刪除、pt-find 表查找與批量操作、pt-kill 惡意查詢熔斷、pt-config-diff 配置差異對比、pt-mysql-summary 實例一覽、pt-variable-advisor 參數智能診斷。本文通過實戰場景展示其高效用法。
特性:分塊處理、可歸檔到文件/異庫、可直接 --purge 刪除、--commit-each 逐事務提交減少鎖持有時間。注意:默認刪除源數據,UTF8 環境需在 [client] 設 default-character-set=utf8 防亂碼。
# 歸檔 ID<=100000 到異庫並導出文件 pt-archiver --source h=192.168.3.135,D=sanmao,t=oss_log --user=root --password=zhang@123 \ --dest h=192.168.3.92,D=sanmao,t=oss_log \ --file '/var/log/oss_log_archive_20120605.log' --where "id<=100000" --commit-each # 僅導出文件 pt-archiver --source h=192.168.3.135,D=sanmao,t=oss_log --user=root --password=zhang@123 \ --file '/var/log/oss_log_archive_20120607.log' --where "id<=160000" --commit-each # 直接刪除 pt-archiver --source h=192.168.3.135,D=sanmao,t=oss_log --user=root --password=zhang@123 --purge --where 'id<=167050'
# 查找 1 天前創建的 InnoDB 表 pt-find --ctime +1 --host=192.168.3.135 --engine InnoDB --user=root --password=zhang@123 # 查找 1 天前修改、庫名匹配 hostsops、引擎 MyISAM 的表,轉為 InnoDB pt-find --mtime +1 --dblike hostsops --engine MyISAM --host=192.168.3.135 --user=root --password=zhang@123 \ --exec "ALTER TABLE %D.%N ENGINE=InnoDB" # 查找 aaa/zhang 庫空表並刪除 pt-find --empty aaa zhang --host=192.168.3.135 --user=root --password=zhang@123 --exec-plus "DROP TABLE %s" # 查找超過 100MB 的表 pt-find --tablesize +100M --host=192.168.3.135 --user=root --password=zhang@123
# 打印運行超過 60 秒的查詢 pt-kill --busy-time 60 --print --host=192.168.3.135 --user=root --password=zhang@123 # 直接 Kill pt-kill --busy-time 60 --kill --host=192.168.3.135 --user=root --password=zhang@123 # 從文件讀取 processlist 分析 mysql -uroot -pzhang@123 -h192.168.3.135 -e "show processlist" > processlist.txt pt-kill --test-matching processlist.txt --busy-time 60 --print
# 本地 vs 遠程實例 pt-config-diff h=localhost h=192.168.3.92 --user=root --password=zhang@123 # 本地文件 vs 遠程實例 pt-config-diff /etc/my.cnf h=192.168.3.92 --user=root --password=zhang@123 # 兩個本地模板文件 pt-config-diff /usr/local/mysql/share/mysql/my-large.cnf /usr/local/mysql/share/mysql/my-medium.cnf
pt-mysql-summary -- --user=root --password=zhang@123 --host=localhost pt-mysql-summary -- --user=root --password=zhang@123 --host=192.168.3.92
# 從實例讀取變量分析 pt-variable-advisor --user=root --password=zhang@123 localhost # 從配置文件讀取(需符合格式) pt-variable-advisor --user=root --password=zhang@123 --source-of-variables my.cnf