自动清理mysql的lock进程的脚本_自动清理MySQL的Lock进程的脚本
自動(dòng)清理MySQL的Lock進(jìn)程的腳本
作者:小涵 | 來(lái)源:互聯(lián)網(wǎng) | 2018-07-13 21:01
閱讀: 915
最近數(shù)據(jù)庫(kù)服務(wù)器在某一時(shí)段進(jìn)程數(shù)忽然暴增,導(dǎo)致數(shù)據(jù)庫(kù)服務(wù)器死掉,根據(jù)日志查詢,是由于Mysql大量Lock進(jìn)程造成服務(wù)器進(jìn)程數(shù)過(guò)高導(dǎo)致。遂寫了一個(gè)腳本,每分鐘檢查下,如果存在負(fù)載過(guò)高的情況,就殺掉一些Lock進(jìn)程。以下腳本稍微改下,也可以完成其他的任
最近數(shù)據(jù)庫(kù)服務(wù)器在某一時(shí)段進(jìn)程數(shù)忽然暴增,導(dǎo)致數(shù)據(jù)庫(kù)服務(wù)器死掉,根據(jù)日志查詢,是由于Mysql大量Lock進(jìn)程造成服務(wù)器進(jìn)程數(shù)過(guò)高導(dǎo)致。 遂寫了一個(gè)腳本,每分鐘檢查下,如果存在負(fù)載過(guò)高的情況,就殺掉一些Lock 進(jìn)程。 以下腳本稍微改下,也可以完成其他的任
最近數(shù)據(jù)庫(kù)服務(wù)器在某一時(shí)段進(jìn)程數(shù)忽然暴增,導(dǎo)致數(shù)據(jù)庫(kù)服務(wù)器死掉,根據(jù)日志查詢,是由于Mysql大量Lock進(jìn)程造成服務(wù)器進(jìn)程數(shù)過(guò)高導(dǎo)致。
遂寫了一個(gè)腳本,每分鐘檢查下,如果存在負(fù)載過(guò)高的情況,就殺掉一些Lock 進(jìn)程。
以下腳本稍微改下,也可以完成其他的任務(wù)。
服務(wù)器負(fù)載高比較危險(xiǎn),可能會(huì)導(dǎo)致整個(gè)服務(wù)宕掉。雖然殺掉一些進(jìn)程對(duì)某些用戶訪問(wèn)可能會(huì)有一些異常,但總比服務(wù)器宕機(jī)要好。
cat killmysqlprocess.sh
#!/bin/bash
#*/1 * * * * /usr/local/src/killmysqlprocess.sh
backdir="/usr/local/logs/"
logfile="cms_mysql_killprocess_$(date +"%Y%m%d").log"
mysqlbindir="/usr/local/mysql/bin/"
#use commond 'vmstat' get proc num
vmstat > vmstat.tmp
pronum=`awk -F" " '{if (NR==3) print $1}' vmstat.tmp`
rm -f vmstat.tmp
#if pronum less 20, nothing to do.......... exit
if [ $pronum -lt 20 ]; then
exit
fi
#it's here more than 20,run kill mysql Lock process
${mysqlbindir}mysql -e "show full processlist" > processlist.tmp
#get Lock mysql process id
awk -F" " '/Locked/{print $1}' processlist.tmp >looplock.tmp
sleep 5
for line in `cat looplock.tmp`
do
/usr/local/mysql/bin/mysql -e "kill ${line}"
done
rm -f looplock.tmp
#write kill log
echo $(date +"%Y-%m-%d %H:%M:%S") >> ${backdir}${logfile}
cat processlist.tmp >> ${backdir}${logfile}
rm -f processlist.tmp
吐了個(gè) "CAO" !
吐個(gè)槽吧,看都看了
總結(jié)
以上是生活随笔為你收集整理的自动清理mysql的lock进程的脚本_自动清理MySQL的Lock进程的脚本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php启动 大量sess文件,关于PHP
- 下一篇: mysql jdbc 单利_java单利