[서버 관리] MongoDB 자동 백업 구성 스크립트 예제
현재 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