ブログ(WordPress)データベース接続確立エラーの自動復旧方法

スポンサードリンク

AWSにWordPressをインストールしてブログを始めて1年ちょっとですが、頻繁に発生するのがこの問題です。

error20151111-2

このデータベース接続確立エラーの対処としては以前からいろいろ試しておりまして
AWSでWordPressやってて頻繁にmysqlがデータベース接続確立エラーでダウンする現象の回避策
ブログがブルートフォースアタックを受けてダウンした話
そのたびに上記のような対処を施してきたんですが、それでもたまにいつのまにかmysqlが落ちていることがあります。落ちた場合はmysqlを手動で起動するか、EC2インスタンス自体を再起動して自動で立ち上がるのを待っているんですが、常にブログが落ちていないかチェックするわけにもいかないし、タイムラグも発生するため、自動でチェックして落ちてたら起動させることにしました。

スポンサードリンク

本当はMackerelで監視もしているので、そこで落ちていたら起動スクリプトを叩くなんてのがスマートなんでしょうけど、めんどくさかったのでcronでシェルスクリプトを毎分実行することにしました。

cron

* * * * * /usr/local/bin/mysql-check.sh

/usr/local/bin/mysql-check.sh

#!/bin/sh

isAlive=`ps auxwww | grep mysql | grep -v grep | wc -l`
#echo `date "+%Y/%m/%d-%H:%M:%S"` mysql alive check >> /usr/local/bin/mysql-check.log

if [ $isAlive -ne 4 ]; then
 echo `date "+%Y/%m/%d-%H:%M:%S"` mysql is down!!!!! >> /usr/local/bin/mysql-check.log
 /etc/init.d/mysqld start >> mysql-check.log
fi

まぁ、なんてことない原始的な方法なんですが、これで1分置きにプロセスが落ちていないかチェックしてくれて、落ちてたら起動までしてくれます。根本的な原因解決としては、たぶんPVがそこそこ(月間3万くらい)増えてきているのでインスタンスのスペックアップ(いまだにmicroインスタンス)とかになっちゃうんじゃないかなと思っていますが、これで延命措置はできるんじゃないかと思うので、しばらく様子見です。

もっといい方法があったら教えてください。

スポンサードリンク

コメントを残す

ABOUTこの記事をかいた人

1983年大分県生まれ。東京在住のWeb系エンジニア。
ポータルサイト、ファッションECサイト、コーディネートアプリ、食品ECサイトの開発運用などを経験。 人に役立つことや面白い記事を書けたらなと思っています。