Home > 7 月 25th, 2008

2008.07.25

cron用のMySQLダンプシェルスクリプト

データベースの情報をバックアップする際の選択肢のひとつとして
「cronで自動的にmysqldumpやpg_dump等のRDBMS特有のダンプコマンドを叩いて保存する」
という手段が挙げられます。

これは、バックアップの質としてはイマイチですが
専用ツールをインストールするような面倒な手間も無く、
いつも使っていてノウハウが蓄積されているコマンドで行うことが出来るため、
簡単なWebサービスや自前のサーバ等では、重宝する手段だと思います。

ただし、この方法を使う際に重要視したいのは、
「いい具合にバックアップする」という点です。

やり過ぎて手動のオペレーションが増えたり、自動化部分の安定性を損なってしまっては、
そもそも、cronで自動化・省力化する趣旨と反してしまいますし、
(※入念にバックアップをする必要がある場合は、気合を入れてサーバの体勢を整えて、かつ、mysql-zrm等の専用ツールを使うべきです)
やらな過ぎて、いざという状況で役に立たない場合も、これまた意味が無いものになってしまいます。

自分の場合は、過去、毎度毎度適当なシェルスクリプトを書いたり
かつ、cronを複数設定して、いい具合になるように調整していましたが、
その労力が勿体無いので、以下のような専用のシェルスクリプトを作成いたしました。

mysqldump4cron.sh

  • 【設定値解説】
    WEEKLY_TARGET_DAY_OF_WEEK … 週次の場合に保存される曜日を指定
    MONTHLY_TARGET_DAY … 月次の場合に保存される日付を指定
    DAYLY_MAX_LIFE … 日次保存ダンプファイルの保持期間を日数で指定
    WEEKLY_MAX_LIFE … 週次保存ダンプファイルの保持期間を日数で指定
    MONTHLY_MAX_LIFE … 月次保存ダンプファイルの保持期間を日数で指定
  • Linuxのみ対応、FreeBSDは現在非対応
    (対応する場合は、コチラの記事が参考になりそう)
  • MySQL用です
  • 異常系処理は実装無し、設定値を間違えないように注意して下さい
  • コメントがローマ字なのは、お恥ずかしい限りです

参考にして戴ければ幸いです。

それでは、大胆さの中にも慎重さがきらめくような、良きバックアップライフをお過ごし下さい!