Amazon RDSでスナップショットを自動取得するシェルスクリプト
Amazon RDSは自動でバックアップをとっており時間指定でPoint In Timeリカバリできますが インスタンスが消えてしまった場合リカバリできなります。
そこで念の為にスナップショットを取得したいのでシェルスクリプトを作って自動的に スナップショットを生成できるようにしました。
自分はEC2上にシェルスクリプトを置いてcronで1日1回実行しています。 EC2上のマシンのOSはAmazon Linuxの64bit版を使っていますが他のディストリビューションの場合は Amazon RDSコマンドラインツールの設定が必要です。
以下がソースです。
#!/bin/sh -l export JAVA_HOME=/usr/lib/jvm/jre export AWS_BIN=/opt/aws/bin export PATH=$PATH:$EC2_HOME/bin:$AWS_BIN export EC2_REGION=ap-northeast-1 export AWS_CREDENTIAL_FILE=/home/ec2-user/credential.txt BACKUP_DATE=`date '+%Y%m%d'` rds-create-db-snapshot -i mydb -s backup-$BACKUP_DATE COUNT=0 MAX=5 for i in `rds-describe-db-snapshots | cut -f3 -d ' ' | sort -r` do if [ $COUNT -ge $MAX ];then echo "DELETE:$i" rds-delete-db-snapshot $i -f fi COUNT=`expr $COUNT + 1` done
指定した個数以上になった場合は古いものから削除しています。 何日分とっておくかはMAXで指定できます。