下載地址
https://www.percona.com/downloads/percona-toolkit/LATEST/
介紹
percona-toolkit是一個工具包,里面有很多命令湃累。例如下面??
-
pt-online-schema-change
可以在線整理表結(jié)構(gòu),收集碎片,給大表添加字段和索引。避免出現(xiàn)鎖表導(dǎo)致阻塞讀寫的操作锻狗。針對 MySQL 5.7 版本麸俘,就可以不需要使用這個命令,直接在線 online DDL 就可以了景鼠。
./pt-online-schema-change --user=root --password=123456
--host=localhost --alter="ADD COLUMN city_id INT" D=test,t=su --execute
- pt-query-digest
分析mysql慢查詢的一個工具,它可以分析binlog痹扇、General log铛漓、slowlog,也可以通過SHOW PROCESSLIST或者通過tcpdump抓取的MySQL協(xié)議數(shù)據(jù)來進(jìn)行分析.
./pt-query-digest --since=24h /data/mysql/slow.log > 1.log
pt-heartbeat
監(jiān)控主從延遲鲫构。監(jiān)控從庫落后主庫大概多少時間浓恶。pt-table-checksum
檢查主從復(fù)制一致性pt-slave-restart
監(jiān)控主從錯誤,并嘗試重啟MySQL主從pt-ioprofile
定位IO問題结笨,可通過IO吞吐量來定位包晰。
在線文檔:https://www.percona.com/doc/percona-toolkit/LATEST/index.html
pt-kill
重點(diǎn)介紹一下pt-kill
工具湿镀。生產(chǎn)環(huán)境中我們時常遇到這樣的情況,數(shù)據(jù)庫性能惡劣伐憾,需要馬上殺掉全部會話勉痴,不然數(shù)據(jù)庫就掛起來。我們可以先找show processlist的輸出來殺會話树肃,但是比較麻煩蒸矛。pt-kill為我們解決了殺會話問題。
詳細(xì)文檔:https://www.percona.com/doc/percona-toolkit/LATEST/pt-kill.html
- 每10秒檢查一次胸嘴,發(fā)現(xiàn)有 Query 的進(jìn)程就給干掉
# 只打印-每10秒檢查一次雏掠,發(fā)現(xiàn)有 Query 的進(jìn)程就給干掉
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-command="Query" --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/1.log
# 執(zhí)行殺操作
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-command="Query" --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/kill.log
- 查殺select大于30s的會話
# 只打印-查殺select大于30s的會話
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-info "select|SELECT" --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log
# 執(zhí)行殺操作-查殺select大于30s的會話
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-info "select|SELECT" --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/pt_select_kill.log
- 查殺某IP來源的會話
# 只打印-查殺某IP來源的會話
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-host "192.168.65.129" --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log
# 執(zhí)行殺操作-查殺某IP來源的會話
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-host "192.168.65.129" --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/pt_select_kill.log
- 查殺訪問某用戶的會話
# 只打印-查殺訪問某用戶的會話
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-user "u2" --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log
# 執(zhí)行殺操作-查殺訪問某用戶的會話
- 殺掉正在進(jìn)行filesort的sql
# 只打印-殺掉正在進(jìn)行filesort的sql
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-command Query --match-state "Sorting result" --run-time 1 --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log
# 執(zhí)行殺操作-殺掉正在進(jìn)行filesort的sql
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-command Query --match-state "Sorting result" --run-time 1 --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/pt_select_kill.log
- 殺掉正在創(chuàng)建索引的sql
# 只打印
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-command Query --match-state "Creating sort index" --run-time 1 --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log
# 執(zhí)行殺操作
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-command Query --match-state "Creating sort index" --run-time 1 --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/pt_select_kill.log