밥컴의 블로그입니다

MongoDB를 사용하면서 종종 현재있는 DB의 데이터를 백업하거나, 복구해야되는 경우가 생깁니다.

아주 친절하게도 MongoDB 개발자 및 기획자분들이 이미 해당 기능을 모두 만들어 놓았습니다.

저희는 그냥 사용만 하면 되는것이죠. 어떻게 사용하는지 정리해보겠습니다.

(하지만 pymongo에는 위의 기능이 없다고 합니다. 파이썬을 이용해서 백업을 하실때는 os.system같은 함수를 이용해서 해당 기능을 사용하시면 됩니다.)


1. 현재 파일 백업하기

mongoDB에서는 백업하는 것을 dump를 한다라고 표현합니다. 다음 사전에 따르면 [컴퓨터 내부 기억 장치 데이터외부 기억 장치 복사하다. 라는 뜻을 가지고 있다고 합니다. 즉 현재 DB에 있는 데이터를 외부 기억 장치로 복사하는 것이죠.

명령어는 다음과 같습니다.

$mongodump [옵션]

참 쉽죠? 개발도 이렇게 쉬웠으면 참 좋겠습니다.  위와 같은 명령어는 가장 기본으로 사용하는 명령어지만, 여기에 옵션을 제대로 줘야 좀 더 원하는 방식으로 작동 합니다.


1.1 mongodump 옵션

- 제가 mongodump개발자가 아니기에, 그냥 제가 사용한 옵션만 정리하겠습니다.

- 저는 호스트 127.0.0.1에 포트 27017을 사용하고요. db이름은 databa입니다. 그아래 collection을 모두 백업하는 예제를 보겠습니다.

- 호스트는 --host 127.0.0.1 의 포맷입니다.

- 포트는 --port 27017 으로 쓰면 됩니다. 

- db이름은 -d databa 로 쓰고요

- 백업하는 디렉토리는 /etc/backup 으로 하고요.

- 백업하는 이름은 myback 으로 하겠습니다.

- 위의 내용을 모두 정리하면 아래와 같습니다.


$ mongodump --host 127.0.0.1 --port 27017 -d databa -o /etc/backup/myback


- 어때요 참 쉽죠?

- 호스트 아이피 뒤에 슬래시를 붙이며 db이름을 붙이면 작동 안합니다. 꼭 -d 옵션으로 db를 꺼내서 명시해주세요.

mongodump --host 127.0.0.1/databa --port 27017  -o /etc/backup/myback 이러면 안된다는겁니다.

- 원격에 있는 DB를 기준으로 로컬도 충분히 가능하기에 하나만 쓰기로 했습니다.ㅎㅎ

- 이렇게 명령어를 사용해서 만든 결과를 보면 bson으로 저장되어있는 데이터들을 볼 수 있습니다. 


2. 백업한 파일 불러오기

위와 같이 현재 백업한 DB정보들을 불러오는 방법입니다. 다양한 부르는 방법이 있지만, mongodb에서는 restore라고 합니다. 네. 복원하다라는 뜻이죠.

동일한 방법으로 mongo다음 내용을 쓰면 됩니다.


$ mongorestore [옵션]


2.1 옵션

- 모두 dump와 동일합니다.

- 바로 예시로 가보면 호스트 127.0.0.1에 포트 27017을 사용 db이름은 databa에 /etc/backup/myback 에 있는 데이터를 불러오겠습니다.


$ mongorestore --host 127.0.0.1 --port 27017 -d databa  /etc/backup/myback/databa


- 어때요? 참 쉽죠?

- dump와 다른점은 -o옵션이 없다와 불러올 때 db까지 적는 것입니다. 

- 뒤에 myback으로 저장을 했지만 db이름까지 적어야 제대로 복원이 되는 것을 확인할 수 있습니다.


간단하죠? 즐거운 코딩하세요~