小編的網站是架在AWS上,用的是最低階的;對資料庫的存取很頻繁所以常常會掛掉(通常是有人在爬我的網站時),每次都要登入遠端重啟好麻煩,就上網爬文一下果然有找到相關的程式,就選一個寫的最簡單的來實作。

先新增restart_mysql.sh檔,輸入以下文字

#!/bin/sh
pidof mysqld >/dev/null
if [ $? -eq 0 ]
then
echo "At `date` Mysql Server is running." >> /home/mysql_log
else
echo "At `date` Mysql Server was stopped." >> /home/mysql_log
sudo service mysql start
fi

程式碼說明:

#!/bin/sh 使用shell script

pidof 是查詢程式的pid 這邊就是先查詢mysql的pid

if [ $? -eq 0 ] $?表示上一個指令回傳結果 通常 0表示正常執行, 1 就表示mysql服務已停止

then 然後就

echo “At `date` Mysql Server is running.” >> /home/mysql_log 輸出 mysql 服務正在執行中 寫入 log檔

else 不然就

echo “At `date` Mysql Server was stopped.” >> /home/mysql_log 輸出 mysql 服務已停止 寫入 log

sudo service mysql start 使用root權限 重新啟動 mysql

fi 條件式結尾

寫完後先執行測試一下看有沒有正確執行
先看一下目前的mysql是否有進程id
指令:pidof mysqld 顯示結果會是一串數字 ex 960
然後停用mysql
指令:service mysql stop
再將 restart_mysql.sh 變更權限 (這一步是為了讓排程可以執行)
指令:chmod 777 restart_mysql.sh
在下指令測試一下
指令:sh restart_mysql.sh

如果正確執行 mysql_log檔會顯示 At 年月日 Mysql Server was stopped.
然後mysql會被重新啟動

最後就將上面的程式加入排程
指令:crontab -e
加入下面這行 (每五分鐘判斷mysql執行狀態)
*/5 * * * * sh /home/restart_mysql.sh

參考資料:
https://www.bennythink.com/cron-mysql-autorestart.html

你可能會喜歡

喜歡我的文章嗎?歡迎按讚加分享,
或是點擊站內廣告讚助,讓本站能常久經營下去;造福廣大網友。

Leave a comment

你的電子郵件位址並不會被公開。 必要欄位標記為 *