2020. 8. 16. 22:26ㆍDatabase/MongoDB
이번에 다루어볼 내용은 몽고디비에서 데이터를 백업하고 복구하는 방법이다.
백업하기(덤프, dump)
몽고디비가 설치되어 있다면, mongodump라는 명령어로 몽고디비 데이터를 백업할 수 있다.
> mongodump --host 127.0.0.1 --port 27017
위 명령으로 데이터를 백업한다면, 현재 디렉토리에 /dump 디렉토리가 생기고 이 디렉토리 밑에 데이터가 복구되어 있다.(DB 별로 폴더가 생겨있고, 그 폴더안에 BSON으로 데이터가 백업되어 있다.)
> mongodump --out ~/mongo_backup --host 127.0.0.1 --port 27017
--out 옵션으로 데이터 백업의 디렉토리 위치를 정해줄 수 있다.
> mongodump --out <dump data path> --host 127.0.0.1 --port 27017 -u <username> -p <password>
username/password로 인증이 필요하다면, 위 명령어로 백업이 가능하다.
> mongodump --out <dump data path> --host 127.0.0.1 --port 27017 -u <username> -p <password> --db <덤프할 db명>
만약 몽고디비에서 특정 데이터베이스만 백업하고 싶다면, 위처럼 --db 옵션을 이용하면 된다.
> mongodump --out <dump data path> --host <dbhost> --port 27017 -u <username> -p <password> --db <dbname> --collection <collectionName>
특정 컬렉션 단위까지 세분화하여 백업하려면 --collection 옵션을 이용한다. 만약 mongodump&mongorestore에서 "error connecting to db server: server returned error on SASL authentication step:Authentication failed" 에러가 났다면, 아래와 같이 옵션하나를 넣어준다.
--authenticationDatabase admin
복구하기(restore)
다음은 위에서 덤프한 데이터를 복구하는 방법이다. 복구는 mongorestore라는 명령어를 이용한다.
> mongorestore --host 127.0.0.1 --port 27017 \
-u <username> -p <password> --drop <drop db name> \
--db <복구할 db name> <복구할 덤프데이터가 있는 디렉토리>
--drop 옵션은 복구전에 드랍시킬 데이터베이스 명을 입력하면 된다.(복구 전 원래 데이터베이스를 드랍시키고 백업 데이터로 새로 복구하는 것이다.) 위 명령을 간단하게 작성해보면 아래와 같다.
> mongorestore --host 127.0.0.1 --port 27017 --db local /mongo_backup/local
특정 데이터베이스를 복구하고 싶다면, 덤프 데이터가 있는 디렉토리에서 특정 데이터베이스의 디렉토리를 명시해야한다. 만약 모든 데이터를 전부다 백업하고 싶다면 아래 명령어를 입력한다.
> mongorestore --host 127.0.0.1 --port 27017 <dump data가 있는 디렉토리>
컬렉션 단위로 리스토어하기 위해서는 --collection 옵션을 사용하며, collectionName.bson까지 백업데이터 경로를 명시해주어야한다.
> mongorestore --host <dbhost> --port 27017 --db <dbname> --collection <collectionName> <data-dump-path/dbname/collection.bson> --drop
ex)
> mongorestore --port 27017 --db test2 --collection rest2 /mydata/restoredata/test/restaurants.bson --drop
여기까지 간단하게 몽고디비 데이터 백업 및 복구에 대해 다루어보았다.
'Database > MongoDB' 카테고리의 다른 글
DB - MongoDB 맵리듀스(Map Reduce) (0) | 2019.09.21 |
---|---|
DB - MongoDB FindAndModify 란? (0) | 2019.09.19 |
DB - MongoDB OperationFailed Sort operation used more than the maximum 33554432 bytes of Ram. (0) | 2019.09.19 |
DB - MongoDB Insert Ordered 옵션은? (0) | 2019.09.19 |
DB - MongoDB Text Search(본문 검색) (0) | 2019.09.16 |