[컴][DB] Mongo db data 를 mongodump 를 이용해서 backup 하기

Mongodbdump / Mongo db backup / 몽고 백업

update 2021-11-23

현재는 mongodump 가 따로 제공된다. 그래서 버전이 다르다. 아래 경로에서 download 할 수 있다.

mongodump

mongodb 의 내용을 backup 은 mongodump 로 할 수 있다. mongodump 는 mongodb 를 설치하면 같이 설치된다.

다른 backup tool 은 아래 page 에서 소개 글을 볼 수 있다.

MongoDB Tools - Admin GUIs, Monitoring and Other Good Stuff

  • MMS Backup
  • BackMyDB

mongodump options

mongodump 는 다양한 option 을 줄 수 있다. option 에 대한 글은 아래에서 확인하자.

backup

backup 은 mongodump 를 사용해서 할 수 있는데,

  • 지금 실행되고 있는 mongod 또는 mongos instance 에 접속해서 할 수 있고
  • 현재 실행되고 있는 mongod 또는 mongos instance 가 없이 data file 에 접근해서 할 수도 있다.

Connect to active instance

collection backup

간단하게 특정 database 에 있는 collection 을 백업하는 방법은 아래와 같다.

mongodump.exe --host 127.0.0.1 --port 27017 -d database_name -c collection_name

위처럼 --output 을 정하지 않으면 collection name 의 folder 안에 아래처럼 .bson 이 생성된다.

database backup

위의 command 에서 collection 부분을 설정하지 않으면 모든 collection 들을 backup 하게 된다.

mongodump.exe --host 127.0.0.1 --port 27017 -d database_name

query 한 내용 backup

d:\Program Files\MongoDB 2.6 Standard\bin>mongodump.exe --host 127.0.0.1 --port 27017 -d db_name -c collection_name -q "{"traffic": 4444}}"
connected to: 127.0.0.1:27017
2014-12-01T22:02:38.153+0900 DATABASE: db_name     to     dump\db_name
2014-12-01T22:02:38.154+0900    db_name.collection_name to dump\db_name\collection_name.bson
2014-12-01T22:02:38.155+0900             1 documents
2014-12-01T22:02:38.156+0900    Metadata for db_name.collection_name to dump\db_name\collection_name.metadata.json

이상한 점은 string 과 관련된 query 는 제대로 동작하지 않았다. 아직 이유를 모르겠다.

Access data files

mongod 가 running 하고 있지 않아도 백업할 수 있다.

--dbpath option 을 설정해 주는 것으로 가능한데 아래처럼 command 를 날리면 된다.

mongodump.exe --dbpath /data -o dataout

이러면

  • dataout/db_name

이런 식으로 들어가게 된다.

Restore

mongorestore 동작

  • mongodump 에 있는 index 들이 다시 만들어진다.
  • 모든 동작은 update 가 아니라, insert 이다.
  • operation 이 error 가 나도 mongorestore 는 계속 동작한다. mongod 가 log 에 error 를 기록한다.

mongorestore 도 mongodump 처럼 active instance 에 접속해서 insert 를 할 수도 있고, 직접 db data 에 restore 할 수도 있다. 단 이때에는 이 db data 를 사용하는 db instance 가 없어야 한다.(mongorestore — MongoDB Manual 2.6.6 > Use 참고)

--dbpath 는 이제(2021-11)는 지원하지 않는다. 아래처럼 수행하면, 현재 running instance 에 접근해서 backup 한 data 를 insert 하게 된다.

mongorestore.exe dataout
mongorestore.exe --dbpath /data dataout

dataout 은 위에서 backup 한 directory 이다.

db 이름 바꿔서 restore

mongorestore.exe --port 22222 --db new_db ./dataout/existing_db

위의 경우는 existing_db 라는 이름의 db 를 new_db 라는 이름의 db 로 insert 하는 명령어이다. 위의 commnad 를 실행하기 위해서는 mongod 가 실행되고 있어야 한다.

시간 Elapsed time

대략 2.5 GB 의 backup 된 data 를 restore 하는데에 45분 정도가 소요됐다. 사용한 computer 의 spec 은 아래와 같다.

  • restore 2.5GB, 45분 소요
[root@new-rmdb01 bin]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             4
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 13
Stepping:              3
CPU MHz:               2499.998
BogoMIPS:              4999.99
Hypervisor vendor:     KVM
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              4096K
NUMA node0 CPU(s):     0-3

References

  1. Back Up and Restore with MongoDB Tools — MongoDB Manual 2.6.6

댓글 없음:

댓글 쓰기