데이터베이스는 항상 백업과 복구를 할 일이 생기기 마련입니다. MongoDB에서는 dump와 restore를 위해 mongodumpmongorestore를 사용합니다.

mongodump

MongoDB path가 환경 변수로 등록되어 있거나, 아니라면 MongoDB가 설치된 bin 디렉토리에 가서 mongodump 명령어를 사용해 MongoDB 전체나 특정 DB, 또는 컬렉션을 BSON 형태로 덤프받을 수 있습니다.

> mongodump -h localhost
2018-03-23T10:53:19.338+0900    writing admin.system.version to
2018-03-23T10:53:19.339+0900    done dumping admin.system.version (1 document)

...

2018-03-23T10:53:19.351+0900    done dumping dms.refresh_token (2232 documents)

위처럼 mongodump 명령어를 사용하면 MongoDB에 접속해서 데이터베이스의 덤프를 dump라는 폴더 아래에 내려받게 됩니다. DB별로 디렉토리가 하나씩 생기고, 그 아래에 컬렉션 별로 BSON 파일이 생성됩니다. -d 또는 --db, -c 또는 --collection 옵션을 통해 특정 데이터베이스, 또는 특정 데이터베이스의 컬렉션만 덤프받을 수도 있습니다.

> mongodump -h localhost -d test_db
2018-03-23T10:53:53.715+0900    writing dms.refresh_token to
2018-03-23T10:53:53.715+0900    writing dms.notice to

...

2018-03-23T10:53:53.725+0900    done dumping dms.refresh_token (2232 documents)
> mongodump -d dms -c refresh_token
2018-03-23T10:54:33.638+0900    writing dms.refresh_token to
2018-03-23T10:54:33.648+0900    done dumping dms.refresh_token (2232 documents)

다른 옵션들은 mongodump 매뉴얼이나 mongodump --help 커맨드를 이용해 알아볼 수 있습니다.

mongorestore

mongodump를 이용하여 BSON 파일을 얻어냈다면 같은 디렉토리의 mongorestore를 이용해 데이터베이스를 복구할 수 있습니다.

> mongorestore -h localhost ~/dump/

이 경우 mongorestore는 /dump 디렉토리 하위에 있는 데이터베이스별 디렉토리를 순회하며, BSON 파일을 통해 데이터베이스를 복구합니다. 특정 데이터베이스만 복구하려면 -d 옵션과 함께 mongorestore를 수행합니다.

> mongorestore -h localhost -d dms ~/dump/dms/

백업 디렉토리의 하위에 있는 해당 데이터베이스의 백업 디렉토리를 기입하여야 합니다. mongorestore는 단순히 insert만 있기 때문에, 겹치는 데이터가 있더라도 해당 값을 덮어쓰지 않습니다. 복구 전에 존재하는 컬렉션을 없애고 싶다면 --drop 옵션을 사용합니다.

> mongorestore -h localhost -d dms --drop ~/dump/dms/

다른 옵션들은 mongodump 매뉴얼이나 mongorestore --help 커맨드를 이용해 알아볼 수 있습니다.

'데이터베이스 > MongoDB' 카테고리의 다른 글

[MongoDB] 인증(authorization) 추가하기  (0) 2018.09.06

+ Recent posts