埼玉在住エンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことについて残していきたいと思っています。https://ikujip.jpの開発も行っているため、そこで使った知識なども載せられればと思います。

cronで定期的にMySQLを起動

需要は少ないかもしれませんが、記事を上げておきます。
cronで定期的にMySQLを起動させた背景としては、Dos攻撃によるものが理由です。
最近海外からアタックを受けてしまい、データベースを落とされることがたまにありまして...
アタック元を調べてIPの制御はしているのですが、
また別なIPからアタックされてしまうことがあり、イタチごっこになってしまって。
根本解決では決してないのですが、データベースを落とされてしまってもすぐに復旧できるようにこの対応をしました。

※私が対応したサーバはCentOS 6.8でした。

まずはMySQLが起動しているのか確認し、起動していなければ起動させるシェルファイルを作成します。

mkdir /var/www/cron
cd /var/www/cron
vim database_cron.sh

ログの書き方などは自由ですが、今回は上記の通り、
起動がされた時点で「/var/log/database_cronlog」に現在事項と「start」という文字が表示されるようになっております。

なので、ログファイルを作成しましょう。

touch /var/log/database_cronlog

この時点で一度MySQLを停止させて動作確認をしてみてください。

sh database_cron.sh

MySQLが起動し、ログも書き出されていれば動作はOKです。

最後にcronの設定です。
何分おきに起動させるか、といったところですが、今回は5分おきに設定するようにしています。

まずはcronが起動しているか確認しましょう。

service crond status

ここで実行中となっていなければcronを起動させてください。

service crond start

そしてcronの登録です。

crontab -e

最後にcronが反映されていることを確認しましょう。

crontab -l

以上です。
簡単に設定できますよね。
それにしてもDos攻撃仕掛けてくる奴はほんとにムカつきますね。
こんなに人に迷惑をかけてるんだから重罪にすればいいのに。