ブログが続かないわけ

この日記のはてなブックマーク数
Webエンジニアが思うこと by junichiro on Facebook

Amazon S3 に自動で定期的にDB のバックアップをとるようにしました

このエントリーを含むはてなブックマーク hateb

Amazon S3 は利用量の上限がないですし、費用も割と安いので、バックアップ用のオンラインストレージとしては結構便利だと思います。SCP などの今まで使い慣れていたデータ転送の仕組みを使えないのが少し面倒に感じるかもしれませんが、それもシェルスクリプトなどで一度自動化してしまえば問題ありません。S3 へのデータ転送にはRuby 製のs3sync を使っていますが、これに関しては他に詳しい記事がございますのでそちらを参照してください。

S3sync について

S3Sync.net - S3Sync Wiki Amazon EC2/S3を使ってみた - 8.EC2とS3のデータを同期させる(S3Syncを使う)

バックアップを自動化

基本的に直近2ヶ月間は毎時バックアップを残し、それ以前は月初のデータだけ永続的に残すというポリシーで運用しようと思いますので、今回は以下の作業を自動化しました。

  1. 1時間に1回DBのバックアップをとる
  2. ユーザーがアップロードする領域のバックアップをとる
  3. それらをS3に転送する
  4. 2ヶ月前のバックアップを削除する
  5. ただし2ヶ月前のついたちの午前1時のバックアップは永続的に残す

以下、ソース。今回はシェルスクリプトで作りました。

#!/bin/bash

# AWS のアカウント設定
AWS_ACCESS_KEY_ID='YOUR_ACCECC_KEY_ID'
AWS_SECRET_ACCESS_KEY='YOUR_SECRET_ACCESS_KEY'
export AWS_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY

# バックアップ用のファイルを一時的に置く場所
backupDir=/home/test/backup/tmp

# バックアップファイル名と削除対象のファイル名を作成する
year=`date +%Y`
oyear=$year
month=`date +%m`
omonth=$(($month-2))
if [ $omonth -le 0 ]
then
  omonth=$(($omonth+12))
  oyear=$(($oyear-1))
fi
dayhour=`date +%d%H`
suf=`printf "%s%02d%s" $year $month $dayhour`
osuf=`printf "%s%02d%s" $oyear $omonth $dayhour`

# バックアップを実行
mkdir -p $backupDir
/usr/bin/mysqldump -u root -F -l db_name > $backupDir/dump.$suf.sql
cp -a /home/test/html/user_data $backupDir/
cd $backupDir
/bin/tar cfz backup.$suf.tar.gz user_data dump.$suf.sql
rm -rf user_data dump.$suf.sql
/bin/mv ./backup.$suf.tar.gz ../
cd ../
rmdir $backupDir
/home/test/bin/s3sync/s3sync.rb -r ./ footing:backup

# 2ヶ月前のバックアップデータを削除(ただしついたちの午前1時は対象外)
if [ $dayhour != '0101' ]
then
  /home/test/bin/s3sync/s3cmd.rb delete footing:backup/backup.$osuf.tar.gz
fi

# clean up
rm ./*

ファイル名とかディレクトリ名とかが2重化しまくっているので、これを参考にされる方は、そのあたりを上の方でまとめて定義しておいたほうが良いと思います。

この記事のトラックバックURL
http://en.yummy.stripper.jp/trackback/1417633
トラックバック
Amazon EC2 で稼動しているサーバの複製を作るテンプレ
Amazon EC2 東京上陸 Amazon EC2 がとうとう東京に上陸しましたね。これでレイテンシともお別れできるかもしれませんね。 クラウドが日本に上陸 (The Cloud Expands to Japan) サーバの複製 今日は、Amazon EC2 ですでにサービスが稼動している場合、その複
| ブログが続かないわけ | 2011/03/04 3:53 PM |
コメント









関連情報