1、pt-kill
参数介绍如下:
no-version-check:不检查数据库版本,如果您用的是阿里云的mysql,必须加上这个选项,因为版本信息可能被改过了。
host:受监控数据库的地址。
port:受监控数据库的端口。
user:登录数据库的用户名。
passowrd:登录数据库的密码。
match-command:指定监控什么样的操作,一般来说是QUERY。
busy-time:监控操作持续多长时间就该触发kill。
kill:监控操作满足触发条件后直接kill。
victims:all表示处理所有操作满足条件的会话,如果没有all,则指处理时间最长的。
interal:触发检查的周期,单位是秒。
print:将kill的会话信息打印出来
使用场景:
[root@ttt bin]# mysql -uroot -p -e "select version(),current_user()"
Enter password:
+------------+----------------+
| version() | current_user() |
+------------+----------------+
| 5.7.17-log | root@localhost |
+------------+----------------+
[root@ttt bin]# ./pt-kill --no-version-check --host localhost --port 3306 --user root --password root --match-command Query --busy-time 10 --kill --victims all --interval 1 --print
2017-11-17T14:22:57 KILL 11 (Query 10 sec) update test set id=44 where id=7
pt-kill 输出日志说明 将id为11的会话进行了kill
2、pt-heartbeat
作用:监控主从延迟
原理:
主库上存在一个用于检查延迟的表heartbeat,pt-heartbeat使用--update参数连接到主库上并持续(根据设定的--interval参数) 使用一个时间戳更新到表heartbeat
pt-heartbeat使用--monitor 或--check连接到从库,检查从主库同步过来的时间戳,并与当前系统时间戳进行比对产生一个差值,该值则用于判断延迟。(前提条件是主库与从库应保持时间同步)
参数介绍:
--daemonize 脚本以守护进程运行,这样即使脚本执行的终端断开了,脚本也不会停止运行。
--database 指定heartbeat表所在的数据库
--create-table 创建heartbeat表如果该表不存在,该表由--database和--table参数来确认。
--update 更新master中heartbeat表的记录
--monitor --monitor是持续输出的,而--check是检测一次即退出
--master-server 指定master的server_id,在检测从的延迟时,必须指定该参数
-file 将最新的--monitor信息输出到文件中,注意最新,新的信息会覆盖旧的信息
使用:
主库上创建heartbeat表
./pt-heartbeat --database bhs --update --create-table --daemonize
从库:
./pt-heartbeat -D bhs --monitor --master-server 1
seconds_behind_master的值是通过将salve服务器当前的时间戳与二进制日志中的事件的时间戳相比得到的,所以只有执行事件时才会报告延迟,该值对于主从延迟不准确