mysql实例异常前信息采集

#!/bin/bash
##脚本使用说明##
##脚本使用前提,环境需安装pstack工具如果没有的话
##安装方式yum install gdb -y
##/opt/mysql/data/$port/mysqld.sock  sock路径根据你们实际环境做调整
##脚本中的mysql登录方式为使用socket登录,可根据你们实际情况修改替换
##文件保存路径/root可以根据自己情况修改

read -p "enter user:" user
read -p "enter passwd:" passwd
read -p "enter port:" port
a=$(mysql -u$user -p$passwd -S /opt/mysql/data/$port/mysqld.sock -e "select version();" 2>&1 |grep -v "Using a password")
backuptime=`date +%Y%m%d-%H%M%S`
filename=$backuptime.txt
if  [ ! -n "$a" ] ;then
		echo "你的mysql实例hang死了" >>/root/$filename
		pid=$(ps -ef | grep mysqld  | grep $port | awk '{print $2}')
		nohup gstack $pid >/root/gstack$filename &
		sleep 3
		gpid=$(ps -ef | grep gstack  | grep $pid | awk '{print $2}')
		kill -9 $gpid
		echo "已收集完成文件为:" gstack$filename
else
		echo "你的mysql实例较卡但未hang住"
    echo "---------信息收集如下-----------" >>/root/$filename
		echo "---------innodn-engine-status信息如下-----------" >>/root/$filename
		mysql -u$user -p$passwd -S /opt/mysql/data/$port/mysqld.sock -e "show engine innodb status\G" >>/root/$filename 2>&1 |grep -v "Using a password"
		echo "---------事务信息如下-----------" >>/root/$filename
		mysql -u$user -p$passwd -S /opt/mysql/data/$port/mysqld.sock -e "select * from information_schema.innodb_trx\G;" >>/root/$filename 2>&1 |grep -v "Using a password"
		echo "---------锁信息如下-----------" >>/root/$filename
		mysql -u$user -p$passwd -S /opt/mysql/data/$port/mysqld.sock -e "select * from information_schema.innodb_locks\G;" >>/root/$filename 2>&1 |grep -v "Using a password"
		echo "---------实例中的锁信息如下-----------" >>/root/$filename
		mysql -u$user -p$passwd -S /opt/mysql/data/$port/mysqld.sock -e "show status like 'innodb_row_lock_%';" >>/root/$filename 2>&1 |grep -v "Using a password"
		echo "---------实例中IO等待事件-----------" >>/root/$filename
		mysql -u$user -p$passwd -S /opt/mysql/data/$port/mysqld.sock -e "SELECT EVENT_NAME, COUNT_STAR, SUM_TIMER_WAIT/1000000000/1000 SUM_TIMER_WAIT_S FROM performance_schema.events_waits_summary_global_by_event_name WHERE SUM_TIMER_WAIT > 0 ORDER BY SUM_TIMER_WAIT_S DESC limit 10;" >>/root/$filename 2>&1 |grep -v "Using a password"
		pid=$(ps -ef | grep mysqld  | grep $port | awk '{print $2}')
		nohup gstack $pid >/root/gstack$filename &
		sleep 3
		gpid=$(ps -ef | grep gstack  | grep $pid | awk '{print $2}')
		kill -9 $gpid
		echo "已收集完成stack文件为:" gstack$filename
		echo "已收集完成文件为:" $filename
fi

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值