[MongoDB] 백업과 복구

-- MongoDB 2013. 1. 14. 16:32
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

두 사이트의 글이 잘 정리되어 있어 본인이 정리하는 것보다 좋을 것 같아 참조했습니다.



MongoDB를 백업하는 방법에는 Journaling을 지원하는 Block 장치일 경우 snapshot, lock & fsync, mongodump& mongorestore 등의 여러 가지가 있다. mongo.org 에 의하면 증분 백업(incremental backup)을지원하지는 않고 있으며, 아직까지 이러한 기능을 수행하는 도구 또한 존재하지 않는 상황이다.

 

데이터베이스엔진이 중단되지 않아야 하는 상황의 경우 dump & restore를 통한 방법이 일반적이므로 아래에 그 사용법에 대해 정리해둔다. 이 방식은 쉽게 표현하자면 단순히 레코드 단위로 백업(dump)을 받고, 복구시에도 레코드 단위로 insert를 반복적으로수행하게 된다.


 

[mongodump]


이명령어를 사용하면 MongoDB 전체나 특정 DB, 컬렉션을 바이너리 형태로 덤프받을 수 있습니다. 

즉 BSON형태로 내려받게 됩니다.


Full backup


/mongo/bin/mongodump --out /mongobackup/20120901 --oplog --host 10.10.0.10 --port 28017-uuser -ppass

 

* 특정 데이터베이스 스키마만 백업할 경우에는 --db dbsname 옵션을 사용한다.


* --oplog옵션은 백업이 진행되고 있는 도중에 발생한 트랜잭션에 대한 데이터를 별도로 처리하여 누락되는 백업데이터가 없도록 해 주는 기능이다.


* 백업이 끝나면/mongobackup/20120901 디렉토리에 각 데이터베이스 스키마별로 서브디렉토리가 생성되어 컬렉션별로 .bson 파일들이 생성된다.


* 용량과 서버 성능에따라 수십분 내지 수시간이 걸릴 수 있으며, 백업되는 디스크의 용량도 수백GB 또는 수TB까지도 사용 가능하여야 할 수도 있다.


 

[mongorestore]


이 명령어는 dump받은BSON파일에서 데이터를 복구해주는 역할을 합니다.


덤프받을때 index도 같이 덤프받기 때문에 복구과정에서 인덱스도 같이 생성이 됩니다.(index를 생성하지 않으려면 index 컬렉션의BSON파일을 제거하면 됩니다.) mongorestore는 단순히 insert과정이 있기 때문에 겹치는 데이터가 있을 경우 해당 값을 덮어쓰지 않습니다.


Full restore


/mongo/bin/mongorestore--host 10.10.0.10 --port 28017 -uuser -ppass --oplog --drop /mongobackup/20120901/

 

* 특정 데이터베이스 스키마만 복구하려면 아래와 같이 수행한다. 

백업디렉토리의 하위 디렉토리 위치에 대상 데이터베이스명을 정확히 기입하여야 한다.


/mongo/bin/mongorestore--host 10.10.0.10 --port 28017 -uuser -ppass --drop --db dbname/mongobackup/20120901/dbname/

 

* --drop 옵션은 복구시에 해당 컬렉션을 삭제하는 방식이다. 

즉 복구시에 동일한 컬렉션이 존재할 경우 컬렉션을 초기화하고 dump된 데이터만을 채워 넣으므로, dump 이후에 저장된 데이터는 소실됨을 의미하므로, 데이터베이스 전체를 dump된 시점으로 되돌릴 때 사용한다.


*  데이터베이스 개별 복구일 경우 --oplog 옵션은 적용되지 않는다.


참조 : http://blog.outsider.ne.kr/790

참조 : http://bryans.tistory.com/entry/MongoDB-%EB%B0%B1%EC%97%85dump%EC%99%80-%EB%B3%B5%EA%B5%ACrestore

'-- MongoDB' 카테고리의 다른 글

[MongoDB] 복제 셋 (Replica set)  (0) 2013.01.14
[MongoDB] 저장 자바스크립트  (0) 2013.01.08
[MongoDB] Database 명령어  (0) 2013.01.08
[MongoDB] 집계  (0) 2013.01.07
[MongoDB] 초보자를 위한 보안 관련 Tips  (0) 2013.01.07
posted by 어린왕자악꿍