Amazon RDSでスナップショットを自動取得するシェルスクリプト

Amazon Web Services

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

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で指定できます。