数秘とITとサーフィンと

〜鎌倉からちえぞーより愛を込めて〜

【IT】サーバーのmysqldを定期的に監視し、再起動させる方法

■目的

原因不明でmysqlデーモンが落ちていた事がある。

この対処として、プロセスを定期的に監視し落ちていたら起動するようにする。

また、起動した際に管理者に事象発生の通知を行い、原因調査できるようにする。

 

■シェル作成

ファイル名:monitor_mysqld.sh

#!/bin/sh
export LANG=ja_JP.UTF-8

MAIL=aaaa@bbbbb.com ←通知先のメアド

# mysqlデーモンが生きているか確認し、なくなっていたら再起動する 
PROCESS=`ps -ef | grep /usr/sbin/mysqld | grep -v grep | wc -l`
if test $PROCESS -eq 0
then
	LOG=`/usr/sbin/service mysqld restart`

	echo -e "mysqldプロセスがなかった為、起動しました。\n
	念の為、サイトを確認して下さい\n
	https://your.site.address/\n\n
	----\n
	※このメールはxxxxxxxサーバー(***.***.***.***)からの自動配信です。\n
	サーバー:サーバー名\n
	実行プログラム:/home/xxxx/check/monitor_mysqld.sh"
	| mail -s "[Alert]: mysql起動実行のお知らせ" $MAIL
fi

※mysqldの実行コマンドはOSによって異なりますので適宜変更下さい。

※メール文章内も見やすくする為に改行を入れています。

 

■定期実行設定

crontab -eにて以下のように1分ごとに実行するようにシェル追加。

# mysqldプロセス監視
*/1 * * * * /home/xxxx/check/monitor_mysqld.sh

 

■確認したOS

CentOS 7.1

 

■参考サイト

http://zuqqhi2.com/mysql-recover

 

※リスタートの戻り値は見ていない。。本当は戻り値に応じたメールしたほうが良さそうですが、もし起動に失敗しても1分後にまたトライするし、メールも飛ぶからいっかなと。