mysql监控死锁_mysql死锁监控

1.建立监视表(锁相关信息会输出到错误日志,执行频率为20s一次。需要停止监控时直接删除表)

说明:这种情况会导致错误日志增加过快

create table innodb_lock_monitor(x int) engine=innodb;

2.使用第三方工具,如innotop,进入后按D键可查看死锁相关事务

3.手工写脚本,直接过滤show engine innodb status中的死锁信息(线上使用,昨天做了简单测试,大家可以补充和修改)

#!/bin/sh

user=xxx

passwd=xxxx

sql=/data/mysql/bin/mysql

IP="MYSQL-75"

AlertLog=/home/mysql/cron/Alert_DeadLock.log

DeadLocks=/home/mysql/cron/DeadLocks.log

Date_min_1=`date -d '1 minutes ago' '+%y%m%d %k:%M'`

#导出innodb状态输出中包含1分钟前内容的数据

$sql -u$user -p$passwd -e "show engine innodb status \G" | grep -e "$Date_min_1" > /dev/null

#如果存在1分钟前的死锁信息

if [ $? = 0 ]; then

#导出数据到文件

$sql -u$user -p$passwd -e "show engine innodb status \G" > $D

你可能感兴趣的:(mysql监控死锁)