Post date: 2010/03/31 1:43:18
以下を参考に作成してください。
===============
バックアップの概要
===============
- ユーザ名anagixでcrontabにより実行します(20分おきに設定)
- ホーム直下のBKUPディレクトリのALB_DB以下に作成します
- alb_productionをmysqldumpし、差分をgitで管理します
- 別のマシーンにrsyncでコピーを作成します(オプション)
ディレクトリの作成
-----------------------------
この例では、~/BKUP/ALB_DBにバックアップを作っています
cd ~/BKUP/ALB_DBして、以下を実行してください。
git init
Crontabの設定
---------------------
00,20,40 * * * * /home/anagix/BKUP/ALB_DB/alb_db_bkup
05,25,45 * * * * rsync -e ssh -a BKUP/ 192.168.1.34:BKUP
10,30,50 * * * * (cd /home/anagix/BKUP; rsync -a /home/anagix/anagix_tools/alb/public/system/projects .) 2>&1 >/dev/null
15 * * * * (cd /home/anagix/BKUP/ALB_DB; git gc) 2>&1 >/dev/null
注意:
2行目はオプションです
sshでパスワードなしにrsyncするためには.sshの設定が必要なのでgoogleしてください。はまるポイントは.sshおよび以下のファイルのパーミッションをsecureに設定することです
3行目はprojectディレクトリのバックアップです。2>&1>/dev/nullはlog出力を出さないおまじないです
4行目で毎日1回git gcを実行します
alb_db_bkupの内容
----------------------------
#!/bin/sh
export PATH=/home/anagix/anagix_tools/bin:$PATH
cd /home/anagix/BKUP/ALB_DB/
mysqldump -u root --skip-extended-insert alb_production > production.mysql.sql
git add .; git commit -am "`date`"
注意: --skip-extended-insert を入れることで、各テーブルの項目がひとつひとつ
INSERTされるので、backupの際の差分が少なくなり、ディスク容量が節約できると
期待されます
==================
バックアップからの復旧
==================
cd ~/BKUP/ALB_DB
git log で、ログを表示します。変更前のcommitのハッシュ値(e288126a37674ee9aa5076a24dd4f7323a8858f4のような値)を見つけます。
git checkout e288126a37674ee9aa5076a24dd4f7323a8858f4 -b temp
で、ブランチを作ります。
production.mysql.sql が過去のものになりましたので、以下を実行します。
mysql -u root alb_production < production.mysql.sql
branchをmasterに戻し、不要になったブランチを消します。
git checkout master
git branch -d temp