docker-compose 상태의 mongodb dump 및 restore 하기 Develop Tip

각설하고 docker-compose 환경에서의 mongodb 를 이용하고 있는 상황에서
dump 하여 파일로 저장하고 다른 docker-compose 에서 이를 restore 해 보았습니다.

생각보다 안 풀려서 몇 시간 들였네요.
아마 버전이나 옵션 또는 tty pipe 를 docker-compose 컨테이너와 진행하는데 문제가
있나 봅니다.

우선 mongo-dump.sh 를 다음과 같이 만들어 줍니다.

#!/bin/bash
rm -f dump_*
docker-compose exec my_mongo \
        mongodump \
        --host my_mongo:27017 \
        --username root --password mypass \
        --archive=/tmp/dump.gz --gzip
docker cp my_mongo:/tmp/dump.gz dump_$(date '+%d-%m-%Y_%H-%M-%S').gz

my_mongo 는 docker-compose 내에서 서비스명, 컨테이너명 으로 지정한 것입니다.
필요에 따라 사용자/암호로 접근합니다.
그 결과를 /tmp/dump.gz 으로 저장한 다음,
docker cp 로 현재 폴더에 다시 복사해 옵니다.

이제 동일한 환경 또는 다른 개발 환경에 다시 복구하려면,

mongo-restore.sh 를 만들어

#!/usr/bin/bash
usage() {
        echo "usage: $0 dump.gz"
        exit 9
}
if [ $# -ne 1 ]; then
        usage
fi
cat $1 | \
        docker exec -i my_mongo \
        mongorestore \
        --host my_mongo:27017 \
        --username root --password mypass \
        --archive --gzip

라고 하면 정상적으로 복구가 되었습니다.

주의: 특정 --db 를 주면 authentication error 가 나왔습니다.



덧글

댓글 입력 영역

구글애드텍스트