LoginSignup
0
2

More than 5 years have passed since last update.

VPCプライベートサブネット内にあるMongoDBのバックアップをS3に保存する

Last updated at Posted at 2017-01-11

◆ 今日やること

PrivateVPN内にあるmonodbのバックアップをS3に保存する

  • VPCプライベートサブネットからS3にアクセスするためのエンドポイントの作成
  • バックアップするための権限を絞ったIAMユーザーの作成
  • mongodbのバックアップの処理のシェルの作成

◆ 実装編

> VPCプライベートサブネットからS3にアクセスするためのエンドポイントの作成

> バックアップするための権限を絞ったIAMユーザーの作成

  • S3バケットの作成

    • バックアップを格納するためのS3バケットを作成します
  • ポリシーの作成

    • MongoDbbkupPolicy
 {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::{作成したバケット}"
        }
    ]
}

> mongodbのバックアップの処理のシェルの作成


BUCKET_NAME=hogehoge
BUCKET_PATH=dump

LIMIT=5
BACKUP_FILE=`date +"%Y%m%d-%H%M%S".dump`
BACKUP_DIR=/home/ec2-user/bkup
LOG=${BACKUP_DIR}/${BACKUP_FILE}.log


mongodump -o ${BACKUP_DIR}/${BACKUP_FILE} 2>&1 | tee -a $LOG
tar cvzf ${BACKUP_DIR}/${BACKUP_FILE}.tar.gz ${BACKUP_DIR}/${BACKUP_FILE} 2>&1 | tee  -a $LOG

rm  -rf ${BACKUP_DIR}/${BACKUP_FILE}
rm  -rf ${BACKUP_DIR}/${BACKUP_FILE}.log

# s3へ格納
aws s3 cp ${BACKUP_DIR}/${BACKUP_FILE}.tar.gz s3://${BUCKET_NAME}/${BUCKET_PATH}/

file_count=`ls -1 | grep dump.tar.gz | wc -l`
file_name=`ls -1 | grep dump.tar.gz | head -1`
if [ $file_count -gt $LIMIT ]
then
        aws s3 rm s3://${BUCKET_NAME}/${BUCKET_PATH}/${file_name}
        rm -rf `ls -1 | grep dump.tar.gz | head -1 | xargs rm -rf`
fi
  • crontabなどで設定
*/5 * * * * /bin/bash /home/ec2-user/bkup/bkup.sh 2>&1

そういえば、Lambdaでやればよかったかも・・・。

◆ 参考

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2