mysql运维工具-percona-toolkit

下载地址

https://www.percona.com/downloads/percona-toolkit/LATEST/

介绍

percona-toolkit是一个工具包,里面有很多命令。例如下面

  1. 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
  1. pt-query-digest
    分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOW PROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析.
./pt-query-digest --since=24h /data/mysql/slow.log > 1.log
  1. pt-heartbeat
    监控主从延迟。监控从库落后主库大概多少时间。

  2. pt-table-checksum
    检查主从复制一致性

  3. pt-slave-restart
    监控主从错误,并尝试重启MySQL主从

  4. pt-ioprofile
    定位IO问题,可通过IO吞吐量来定位。

在线文档:https://www.percona.com/doc/percona-toolkit/LATEST/index.html

pt-kill

重点介绍一下pt-kill工具。生产环境中我们时常遇到这样的情况,数据库性能恶劣,需要马上杀掉全部会话,不然数据库就挂起来。我们可以先找show processlist的输出来杀会话,但是比较麻烦。pt-kill为我们解决了杀会话问题。
详细文档:https://www.percona.com/doc/percona-toolkit/LATEST/pt-kill.html

  1. 每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
  1. 查杀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
  1. 查杀某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
  1. 查杀访问某用户的会话
# 只打印-查杀访问某用户的会话
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
# 执行杀操作-查杀访问某用户的会话
  1. 杀掉正在进行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
  1. 杀掉正在创建索引的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

你可能感兴趣的:(mysql运维工具-percona-toolkit)