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
댓글 없음:
댓글 쓰기