■目的
原因不明で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分後にまたトライするし、メールも飛ぶからいっかなと。