天天看點

mysql percona online,mysql運維工具-percona-toolkit

下載下傳位址

介紹

percona-toolkit是一個工具包,裡面有很多指令。例如下面👇

pt-online-schema-change

可以線上整理表結構,收集碎片,給大表添加字段和索引。避免出現鎖表導緻阻塞讀寫的操作。針對 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協定資料來進行分析.

./pt-query-digest --since=24h /data/mysql/slow.log > 1.log

pt-heartbeat

監控主從延遲。監控從庫落後主庫大概多少時間。

pt-table-checksum

檢查主從複制一緻性

pt-slave-restart

監控主從錯誤,并嘗試重新開機MySQL主從

pt-ioprofile

定位IO問題,可通過IO吞吐量來定位。

pt-kill

重點介紹一下pt-kill工具。生産環境中我們時常遇到這樣的情況,資料庫性能惡劣,需要馬上殺掉全部會話,不然資料庫就挂起來。我們可以先找show processlist的輸出來殺會話,但是比較麻煩。pt-kill為我們解決了殺會話問題。

詳細文檔:https://www.percona.com/doc/percona-toolkit/LATEST/pt-kill.html

每10秒檢查一次,發現有 Query 的程序就給幹掉

# 隻列印-每10秒檢查一次,發現有 Query 的程序就給幹掉

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

# 執行殺操作

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

# 執行殺操作-清除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

# 執行殺操作-清除某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

# 執行殺操作-清除通路某使用者的會話

殺掉正在進行filesort的sql

# 隻列印-殺掉正在進行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

# 執行殺操作-殺掉正在進行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

殺掉正在建立索引的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

# 執行殺操作

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