[MongoDB] 백업 및 복구

2020. 12. 21. 01:43Database/MongoDB

1. 백업

mongodump는 MongoDB에서 공식적으로 제공되는 유일한 백업 도구이지만 논리적인 수준의 백업만을 실행하는 도구이다. 즉, mongodump는 MongoDB 서버의 데이터 파일을 물리적으로 복사하는 것이 아닌 MongoDB 서버에 로그인한 뒤 Document를 한건 한건씩 덤프해서 BSON 파일로 저장하는 방식이다. 따라서 mongodump는 백업 시간과 복구 시간이 오래 걸린다.

 

mongodump는 긱본적으로 특정 시점의 스냅샷을 덤프하지 않는다. 즉, mongodump를 통해 데이터가 덤프되는 동안 변경되는 데이터에 대해서는 백업이 일관된 상태를 유지하지 못한다. 따라서 mongodump를 이용해서 백업하는 경우에는 --oplog 옵션을 이용하여 mongodump 명령을 실행해야 덤프가 실행 중인 동안 변경되는 데이터의 OpLog 이벤트를 같이 백업할 수 있다. 데이터 복구시에는 mongodump가 실행되는 동안 수집된 OpLog를 모두 재생하여 백업이 완료된 시점의 데이터베이스 상태를 만든다.

 

만약 MongoDB 라우터(mongos)를 통해 mongodump 백업을 하는 경우에는 --oplog 옵션을 사용할 수 없다. 따라서 스냅샷 백업을 수행할 때에는 직접 서버에 로그인하여 백업을 수행해야한다. 물론 MongoDB 서버의 OpLog 가 활성화 되어 있어야만 스냅샷 백업이 가능하다.

 

--username 옵션으로 인증을 위한 비밀번호를 확인하는 과정을 거치기 때문에 --password 옵션은 포함하지 않아도 된다. 만약 --password 옵션을 포함한채 실행했을 때, 에러가 발생한다면 --password 옵션을 제거한 뒤 실행해주도록 한다.

mongodump --authenticationDatabase admin --username userid --password \
  --oplog --out /data/backup/

 

 

 

2. 복구

mongodump를 이용한 데이터 파일 복구 방법은 --oplogReplay 옵션으로 덤프된 데이터 파일을 모두 적재한 후에 백업 디렉터리의 oplog.bson 파일을 적재하여 복구해주면 된다. (--oplog 옵션을 이용하여 백업을 했을 경우에만 가능)

mongostore --oplogReplay /data/backup/

[참고] Real MongoDB

728x90

'Database > MongoDB' 카테고리의 다른 글

[MongoDB] 보안  (1) 2020.12.20
[MongoDB] 잠금, 트랜잭션  (0) 2020.12.19
[MongoDB] Index  (0) 2020.12.19
[MongoDB] Aggregation Pipeline  (0) 2020.12.18