티스토리 뷰

현재 MongoDB에 저장된 데이터를 자동으로 보관하기 위해 다음과 같은 쉘 스크립트를 사용하여 저장한다.

 

* MongoDB 데이터 저장 과정 및 필요 사항

 

  • 컨테이너 생성 시 데이터볼륨 옵션(docker run -v)을 사용하여 컨테이너 내 백업 경로(/dump)를 컨테이너 외부 디렉터리(/srv/mongo/dump) 연결하도록 설정하도록 한다.

# docker run -dit --name mongo -v /srv/mongo/db:/data/db -v /srv/mongo/dump:/dump --restart always -p 27017:27017 mongo

 

👉 컨테이너가 멈추더라도 데이터 볼륨 옵션 경로에 저장된 데이터는 그대로 컨테이너 외부에서 유지됨

(컨테이너에 문제가 생겨도 백업된 파일 보존 가능)

 

mongodump를 통한 mongoDB 데이터 백업 및 백업 데이터가 저장된 아카이브 파일 생성 스크립트 생성(dump.sh)

#!/bin/bash

BACKUPPREFIX="dump"

TIMESTAMP=`date +%Y%m%d%H%M%S`

DATE=`date +%Y%m%d`

BACKUPDIR="/dump"

MONGODUMP_PATH="/usr/bin/mongodump"

HOST="127.0.0.1"

BACKUPNAME="$BACKUPPREFIX-$TIMESTAMP"

BACKUPFILE="$BACKUPPREFIX-$DATE"

$MONGODUMP_PATH -h $HOST -o $BACKUPDIR/$BACKUPNAME

tar -zcvf $BACKUPDIR/$BACKUPFILE.tar $BACKUPDIR/$BACKUPNAME

rm -r $BACKUPDIR/$BACKUPNAME

 

1시간마다 해당 스크립트 자동 실행되도록 설정 (crontab)

 0 * * * * /bin/bash /dump/dump.sh

댓글