AWS DocDB에서 S3로 데이터 백업

아홉번째태양·2023년 5월 3일
0

mongodb-org-tools

DocDB의 데이터를 S3에 저장하기 위해서는 Cloud9 인스턴스 혹은 DocDB에 접근하는 인스턴스에 mongodb-org-tools가 먼저 설치되어 있어야한다.

sudo yum install mongodb-org-tools-4.0.18

mongodb-org-tools는, mongodump, mongorestore, mongoexport, mongoimport 등의 유틸리티 툴들을 추가로 제공하며, 데이터의 백업과 복구를 지원한다.

mongodump / mongorestore 는 데이터를 바이너리(BSON) 형태로 백업을 하며 크기 효율이 좋기 때문에 단순한 백업을 하려할 때 권장된다.
mongoexport / mongoimport 는 데이터를 JSON 형태로 백업하여 사람이나 여러 프로그래밍 언어가 읽기 좋은 형태로 백업할 수 있다.

데이터 추출

데이터베이스 모델이 변경되면서 기존 데이터를 추후 레퍼런스할 수 있도록 백업을 해두는 것이 목적이기에 JSON 형식으로 백업을 하기로 한다.

mongoexport \
  --host=mydb.cluster-123.ap-northeast-2.docdb.amazonaws.com:27017 \
  --ssl \
  --sslCAFile=rds-combined-ca-bundle.pem \
  --username=user \
  --password=password \
  --db=MyDatabase \
  --collection=projects \
  --type=json \
  --out=Alpha_20230503_projects.json

S3에 전송


S3에 전송하기 위해서 먼저 aws-cli를 설치하고 설정이 되어 있어야한다. Cloud9 인스턴스를 사용중이라면 aws-cli가 설치되어있지만, 현재 로그인되어 있는 사용자에 S3 접근 권한이 없을 수도 있기 때문에 확인하고 S3 접근 권한이 있는 IAM 사용자를 준비해야한다.

$ aws configure
AWS Access Key ID [None]: ACCESS_KEY
AWS Secret Access Key [None]: SECRET_ACCESS_KEY
Default region name [None]: ap-northeast-2

백업을 할 S3 버킷이 준비가 되었다면 S3로 복사를 한다.

aws s3 cp backup.json s3://my-bucket/docdb/20230503/backup.json

스크립트로 만들기

mongoexport는 컬렉션 단위로 백업을 하기 때문에 백업과 복사 명령을 여러번 반복해야한다. 따라서 이를 스크립트로 만들기로 한다.

#!/bin/bash

# Set MongoDB credentials and connection parameters
MONGO_HOST="my-cluster.cluster-123.ap-northeast-2.docdb.amazonaws.com:27017"
MONGO_USER="user"
MONGO_PASSWORD="password"
MONGO_DB="MyDatabase"
MONGO_SSL_CA_FILE="rds-combined-ca-bundle.pem"

# Set AWS S3 bucket name
S3_BUCKET="my-archive"

# Get current date in the format YYYYMMDD
DATE=$(date +%Y%m%d)

for COLLECTION in "users" "projects" "comments"
do
        EXPORT_FILE="Alpha_${DATE}_${COLLECTION}.json"
        EXPORT_PATH="backup/${DATE}/${EXPORT_FILE}"
        mongoexport --host=$MONGO_HOST --ssl --sslCAFile=$MONGO_SSL_CA_FILE --username=$MONGO_USER --password=$MONGO_PASSWORD --db=$MONGO_DB --collection=$COLLECTION --type=json --out=$EXPORT_FILE

        S3_PATH="s3://${S3_BUCKET}/docdb/${DATE}/${EXPORT_FILE}"
        aws s3 cp $EXPORT_FILE $S3_PATH
done

참고링크...
Dumping, Restoring, Importing, and Exporting Data

0개의 댓글