日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

linux终止mysql进程_Ubuntu Linux下定时监测MySQL进程终止时自动重启的方法

發(fā)布時(shí)間:2023/12/2 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux终止mysql进程_Ubuntu Linux下定时监测MySQL进程终止时自动重启的方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

最近發(fā)現(xiàn)MySQL服務(wù)隔三差五就會(huì)掛掉,導(dǎo)致我的網(wǎng)站和爬蟲(chóng)都無(wú)法正常運(yùn)作。自己的網(wǎng)站是基于MySQL,在做爬蟲(chóng)存取一些資料的時(shí)候也是基于MySQL,數(shù)據(jù)量一大了,MySQL它就有點(diǎn)受不了了,時(shí)不時(shí)會(huì)崩掉,雖然我自己有網(wǎng)站監(jiān)控和郵件通知,但是好多時(shí)候還是需要我來(lái)手動(dòng)連接我的服務(wù)器重新啟動(dòng)一下我的MySQL,這樣簡(jiǎn)直太不友好了,所以,我就覺(jué)定自己寫(xiě)個(gè)腳本,定時(shí)監(jiān)控它,如果發(fā)現(xiàn)它掛掉了就重啟它。 好了,閑言碎語(yǔ)不多講,開(kāi)始我們的配置之旅。 運(yùn)行環(huán)境:Ubuntu Linux 14.04

編寫(xiě)Shell腳本

首先,我們要編寫(xiě)一個(gè)shell腳本,腳本主要執(zhí)行的邏輯如下: 顯示mysqld進(jìn)程狀態(tài),如果判斷進(jìn)程未在運(yùn)行,那么輸出日志到文件,然后啟動(dòng)mysql服務(wù),如果進(jìn)程在運(yùn)行,那么不執(zhí)行任何操作,可以選擇性輸出監(jiān)測(cè)結(jié)果。 可能大家對(duì)于shell腳本比較陌生,在這里推薦官方的shell腳本文檔來(lái)參考一下 Ubuntu Shell 編程基礎(chǔ) shell腳本的后綴為sh,在任何位置新建一個(gè)腳本文件,我選擇在 /etc/mysql 目錄下新建一個(gè) listen.sh 文件。 執(zhí)行如下命令:

1

2

3

cd /etc/mysql

touch listen.sh

vi listen.sh

進(jìn)入到vi中,我們添加如下腳本內(nèi)容:

1

2

3

4

5

6

7

8

9

#!/bin/bash

pgrep mysqld &> /dev/null

if [ $? -gt 0 ]

then

echo "`date` mysql is stop"

service mysql start

else

echo "`date` mysql running"

fi

其中 pgrep mysqld 是監(jiān)測(cè)mysqld服務(wù)的運(yùn)行狀態(tài),&> /dev/null 是將其結(jié)果輸出到空文件,也就是不保存輸出信息 $? 是拿到上一條命令的運(yùn)行結(jié)果,-gt 0 是判斷是否大于0,后面則是輸出時(shí)間到日志文件,然后啟動(dòng)mysql,否則不啟動(dòng)mysql 保存好了,那么我們執(zhí)行如下的命令,來(lái)測(cè)試一下。 貼心的命令文字版本:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

root@iZ28uogb3laZ:/etc/mysql# vi listen.sh

root@iZ28uogb3laZ:/etc/mysql# pgrep mysqld

3359

root@iZ28uogb3laZ:/etc/mysql# chmod 777 listen.sh

root@iZ28uogb3laZ:/etc/mysql# ./listen.sh

Sun Aug 16 16:44:58 CST 2015 mysql running

root@iZ28uogb3laZ:/etc/mysql# sudo service mysql stop

mysql stop/waiting

root@iZ28uogb3laZ:/etc/mysql# ./listen.sh

Sun Aug 16 16:45:17 CST 2015 mysql is stop

mysql start/running, process 4084

root@iZ28uogb3laZ:/etc/mysql# ./listen.sh

Sun Aug 16 16:45:24 CST 2015 mysql running

root@iZ28uogb3laZ:/etc/mysql#

嗯,編輯完了.sh文件之后,我們首先要對(duì)其進(jìn)行授權(quán),增加可執(zhí)行的權(quán)限。

1

sudo chmod 777 listen.sh

然后運(yùn)行腳本測(cè)試一下,顯示mysql正在運(yùn)行。把mysql關(guān)掉,運(yùn)行腳本,便會(huì)檢測(cè)到mysql已關(guān)閉,然后重新啟動(dòng)了mysql,再次運(yùn)行,便會(huì)發(fā)現(xiàn)mysql正常運(yùn)行了。 注:這里我比較納悶shell腳本中pgrep mysqld的返回結(jié)果是什么。為什么它大于0便代表mysql服務(wù)掛掉了呢?感覺(jué)邏輯有點(diǎn)是相反的,不過(guò)實(shí)測(cè)可用有效。如果大家明白為什么,非常希望您可以給我一個(gè)解釋。

修改日志輸出

好,接下來(lái)我們把輸出的內(nèi)容保存到日志里。修改腳本文件如下

1

2

3

4

5

6

7

8

9

#!/bin/bash

pgrep mysqld &> /dev/null

if [ $? -gt 0 ]

then

echo "`date` mysql is stop" >> /var/log/mysql_listen.log

service mysql start

else

echo "`date` mysql running" >> /var/log/mysql_listen.log

fi

這樣,每執(zhí)行一次腳本,輸出結(jié)果都會(huì)被保存到 /var/log/mysql_listen.log 中了。

添加定時(shí)任務(wù)

好了,腳本可以順利執(zhí)行了,那么我們就需要定時(shí)調(diào)用一下這個(gè)腳本來(lái)運(yùn)行了,我們需要用到 cron。 首先我們需要編輯一下corn調(diào)度表格,命令如下:

1

crontab -e

如果你是第一次編輯這個(gè),他會(huì)讓你選擇文件打開(kāi)方式,隨便選一個(gè)數(shù)字就好了。 比如我們用GNU打開(kāi)的,我們就在它的最后一行添加下面的一句話即可。 、 文字版本:

1

*/5 * * * * /etc/mysql/mysql_listen.sh

/5代表五分鐘執(zhí)行一次,后面的四個(gè)點(diǎn)依次代表了,小時(shí),日,月,星期。如果想要時(shí)間長(zhǎng)一些,比如一小時(shí)調(diào)度一次,那就設(shè)置一下后面第一個(gè)*就好了。 好,保存一下,重啟cron服務(wù)。

1

service cron restart

嗯,調(diào)度任務(wù)已經(jīng)添加進(jìn)去了,這樣,每五分鐘系統(tǒng)就會(huì)調(diào)用一下剛才寫(xiě)的那個(gè)腳本。 過(guò)一段時(shí)間,我們來(lái)看一下運(yùn)行效果,嗯,監(jiān)控跑的很順利吶。 文字版本:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Sun Aug 16 15:39:12 CST 2015 mysql running

Sun Aug 16 15:40:01 CST 2015 mysql running

Sun Aug 16 15:45:02 CST 2015 mysql running

Sun Aug 16 15:50:01 CST 2015 mysql running

Sun Aug 16 15:55:01 CST 2015 mysql running

Sun Aug 16 16:00:01 CST 2015 mysql running

Sun Aug 16 16:05:01 CST 2015 mysql running

Sun Aug 16 16:10:01 CST 2015 mysql running

Sun Aug 16 16:15:01 CST 2015 mysql running

Sun Aug 16 16:20:01 CST 2015 mysql running

Sun Aug 16 16:25:01 CST 2015 mysql running

Sun Aug 16 16:30:01 CST 2015 mysql running

Sun Aug 16 16:35:01 CST 2015 mysql running

Sun Aug 16 16:40:01 CST 2015 mysql running

Sun Aug 16 16:51:04 CST 2015 mysql running

哈哈,是不是五分鐘監(jiān)測(cè)了一次呢?大功告成。

后記

這樣,我們就實(shí)現(xiàn)了五分鐘定時(shí)檢測(cè)MySQL進(jìn)程服務(wù),媽媽再也不用擔(dān)心我的網(wǎng)站會(huì)宕掉啦。 如有問(wèn)題,歡迎留言交流,謝謝啦。

總結(jié)

以上是生活随笔為你收集整理的linux终止mysql进程_Ubuntu Linux下定时监测MySQL进程终止时自动重启的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。