中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現監控MySQL服務shell腳本

發布時間:2021-09-16 16:53:42 來源:億速云 閱讀:189 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關如何實現監控MySQL服務shell腳本的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

1)端口判斷法==>僅適合數據庫本地使用

法1:if條件判斷方法

[root@oldboy scripts]# cat check_db01.sh
#!/bin/sh
#created by oldboy
#mail:oldboy521@gmail.com
PortNum=`netstat -lnt|grep 3306|wc -l`
if [ $PortNum -eq 1 ]
then
 echo "mysqld is running."
else
 echo "mysqld is stoped."
fi

法2:條件表達式用法

[root@oldboy scripts]# cat check_db01_1.sh
#!/bin/sh
#created by oldboy
#mail:oldboy521@gmail.com
 
PortNum=`netstat -lnt|grep 3306|wc -l`
#PortNum=`nmap 10.0.0.189 -p 3306|grep open|wc -l`
[ $PortNum -eq 1 ] && echo "mysqld is running."||echo "mysqld is stoped."

法3:使用系統函數顯示法

[root@oldboy scripts]# cat check_db01_2.sh
#!/bin/sh
#created by oldboy
#mail:oldboy521@gmail.com
#load functions
[ -f /etc/init.d/functions ] && . /etc/init.d/functions
PortNum=`netstat -lnt|grep 3306|wc -l`
if [ $PortNum -eq 1 ]
then
 action "mysqld is running." /bin/true
else
 action "mysqld is stoped." /bin/false
fi

2)進程加端口判斷法==>僅適合數據庫本地使用

[root@oldboy scripts]# cat check_db02.sh
#!/bin/sh
#created by oldboy
#mail:oldboy521@gmail.com
 
PortNum=`netstat -lnt|grep 3306|wc -l`
ProcessNum=`ps -ef|grep mysql|grep -v grep| wc -l`
#echo $PortNum $ProcessNum
#exit 1
 
if [ $PortNum -eq 1 -a $ProcessNum -eq 2 ]
then
 echo "mysqld is running."
else
 echo "mysqld is stoped."
fi

提示:如果不放心還可以同時加上模擬用戶訪問。

技巧:腳本調試技巧

1)grep過濾的字符串,不要包含在文件名里,例:grep mysql ,文件名為check_mysql.sh 就不太好。比較好的文件名如:
-rw-r--r-- 1 root root  236 Sep  9 22:19 check_db01.sh
-rw-r--r-- 1 root root  293 Sep  9 22:34 check_db02.sh
-rw-r--r-- 1 root root  212 Sep  9 22:49 check_db03.sh
2)當語法沒有問題但是結果不正確,可以使用下面的方法排查:
   a)在變量定義的后面打印變量結果,看和實際結果是否一致,如:
     echo $PortNum $ProcessNum
     exit 1
   b) sh -x check_db02.sh的方式,跟蹤腳本執行過程,更多的調試方案見后面的SHELL腳本調試精講。
3)判斷遠端mysql服務是否正常的方法

法1:端口檢查法==>適合在遠端服務器使用(本地也適合)

[root@oldboy scripts]# cat check_db03.sh
#!/bin/sh
#created by oldboy
#mail:oldboy521@gmail.com
PortNum=`nmap 10.0.0.189 -p 80|grep open|wc -l`
if [ $PortNum -eq 1 ]
then
 echo "mysqld is running."
else
 echo "mysqld is stoped."
fi

提示:端口的使用方法還有很多種,包括不限于下面地址的3種方法,http://oldboy.blog.51cto.com/2561410/942530
例如:還可以用nagios的check_tcp插件等法。
法2:模擬用戶(包括web server)訪問方法==>適合在遠端服務器使用(本地也適合)

[root@oldboy scripts]# cat check_db04.sh
#!/bin/sh
#created by oldboy
#mail:oldboy521@gmail.com
 
mysql -S /data/3306/mysql.sock -e "select version();" >/dev/null 2>&1
if [ $? -eq 0 ]
then
 echo "mysqld is running."
else
 echo "mysqld is stoped."
fi

技巧:
1)使用web 連接賬號模擬訪問。
法3:模擬用戶使用程序URL的方式判斷

<?php
/*
#this scripts is created by oldboy
#oldboy QQ:31333741
#site:http://www.etiantian.org
#blog:http://oldboy.blog.51cto.com
#oldboy trainning QQ group: 208160987 226199307 44246017
*/
  $link_id=mysql_connect('10.0.0.4','oldboy','oldboy123') or mysql_error();
  if($link_id){
   echo "mysql successful by oldboy !";
  }else{
   echo mysql_error();
  }
?>

以上的方法僅僅是簡單的判斷,那么下面給出一個集判斷,處理,及報警于一身的較專業的mysql檢查處理腳本。
4)較專業mysql檢查處理腳本的解決方案

#!/bin/bash 
#created by oldboy QQ 49000448 
#date:20100918 
MYUSER=root 
MYPASS="oldboy" 
MYSOCK=/data/3306/mysql.sock 
MySQL_STARTUP="/data/3306/mysql" 
LOG_PATH=/tmp 
LOG_FILE=${LOG_PATH}/mysqllogs_`date +%F`.log 
MYSQL_PATH=/usr/local/mysql/bin 
MYSQL_CMD="$MYSQL_PATH/mysql -u$MYUSER -p$MYPASS -S $MYSOCK" 
#→全變量定義方式,顯得更專業。 
$MYSQL_CMD -e "select version();" >/dev/null 2>&1 
if [ $? -eq 0 ] 
then 
echo "MySQL is running! " 
exit 0 
else 
$MySQL_STARTUP start >$LOG_FILE#→日志也是變量。 
sleep 5; 
$MYSQL_CMD -e "select version();" >/dev/null 2>&1 
if [ $? -ne 0 ] 
then 
for num in `seq 10`#→通過for循環來殺死mysqld,真正殺死則退出循環或每隔個兩秒殺一次,一共殺10次。 
do 
killall mysqld>/dev/null 2>&1 
[ $? -ne 0 ] && break; 
sleep 2 
done 
$MySQL_STARTUP start >>$LOG_FILE 
fi 
$MYSQL_CMD -e "select version();" >/dev/null 2>&1 && Status="restarted" || Status="unknown"#→這個邏輯更準確。 
echo "MySQL status is $Status" >>$LOG_FILE 
mail -s "MySQL status is $Status" 31333741@qq.com < $LOG_FILE 
#→把上面的Status作為結果標題傳給郵件,當然你可以做短信,語音通話報警。 
fi 
exit

感謝各位的閱讀!關于“如何實現監控MySQL服務shell腳本”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉林省| 习水县| 五常市| 孝昌县| 南城县| 遂昌县| 天水市| 黄骅市| 遵义县| 壶关县| 绵竹市| 鄯善县| 石首市| 岐山县| 西贡区| 芜湖市| 遂川县| 罗定市| 礼泉县| 介休市| 即墨市| 江北区| 遂溪县| 甘孜县| 商南县| 澄迈县| 焦作市| 郧西县| 密山市| 望都县| 宜川县| 长沙县| 连江县| 肇州县| 景泰县| 武宁县| 乐亭县| 澄江县| 海城市| 合作市| 大庆市|