1.1 MongoDump & MongoRestore
가장 대표적인 Backup Utility입니다.
전체 Backup , DB별 Backup, Caolection별 Backup 의 3가지 방법으로 Backup 및 Restore를 제공합니다.
특정 DB Backup 방법입니다.
C:\MongoDB>mongodump --db test // 해당 폴더 아래 dump/DB명 안에 File들이 생성됩니다. 2015-08-17T08:42:56.438+0900 writing test.system.profile to dump\test\system.profile.bson 2015-08-17T08:42:56.445+0900 writing test.system.indexes to dump\test\system.indexes.bson 2015-08-17T08:42:56.445+0900 writing test.emp to dump\test\emp.bson 2015-08-17T08:42:56.447+0900 writing test.system.profile metadata to dump\test\system.profile.metadata.json 2015-08-17T08:42:56.449+0900 done dumping test.system.profile (2 documents) 2015-08-17T08:42:56.450+0900 writing test.emp metadata to dump\test\emp.metadata.json 2015-08-17T08:42:56.451+0900 done dumping test.emp (14 documents) |
특정 Collection을 Backup 해 보겠습니다.
C:\MongoDB\d>mongodump --db test --collection emp --out c:/mongodb/d // --out 옵션으로 File들이 생성될 Folder 지정이 가능합니다. 2015-08-17T08:50:59.723+0900 writing test.emp to c:\mongodb\d\test\emp.bson 2015-08-17T08:50:59.730+0900 writing test.emp metadata to c:\mongodb\d\test\emp.metadata.json 2015-08-17T08:50:59.732+0900 done dumping test.emp (14 documents) |
조건문을 주어서 특정 Document만 Backup도 가능합니다.
C:\>mongodump --db test --collection emp --query "{ deptno : { $gte : 10 , $lt : 20 } }" 2015-08-17T08:56:00.523+0900 writing test.emp to c:\mongodb\c\test\emp.bson 2015-08-17T08:56:00.531+0900 writing test.emp metadata to c:\mongodb\c\test\emp.metadata.json 2015-08-17T08:56:00.532+0900 done dumping test.emp (3 documents) |
전체 DB를 Backup해 보겠습니다.
C:\MongoDB>mongodump 2015-08-17T08:52:59.810+0900 writing test.system.indexes to dump\test\system.indexes.bson 2015-08-17T08:52:59.819+0900 writing test.system.profile to dump\test\system.profile.bson 2015-08-17T08:52:59.819+0900 writing test.emp to dump\test\emp.bson 2015-08-17T08:52:59.821+0900 writing test.system.profile metadata to dump\test\system.profile.metadata.json 2015-08-17T08:52:59.821+0900 done dumping test.system.profile (2 documents) 2015-08-17T08:52:59.822+0900 writing test.emp metadata to dump\test\emp.metadata.json 2015-08-17T08:52:59.824+0900 done dumping test.emp (14 documents) |
이제 복구 방법들입니다.
먼제 전체 DB 복구입니다.
C:\MongoDB>mongorestore 2015-08-17T08:58:43.840+0900 using default 'dump' directory 2015-08-17T08:58:43.855+0900 building a list of dbs and collections to restore from dump dir 2015-08-17T08:58:43.859+0900 reading metadata file from dump\test\emp.metadata.json 2015-08-17T08:58:43.860+0900 reading metadata file from dump\test\system.profile.metadata.json 2015-08-17T08:58:43.860+0900 restoring test.emp from file dump\test\emp.bson 2015-08-17T08:58:43.860+0900 no indexes to restore 2015-08-17T08:58:43.861+0900 finished restoring test.system.profile (0 documents) 2015-08-17T08:58:43.865+0900 restoring indexes for collection test.emp from metadata 2015-08-17T08:58:43.868+0900 finished restoring test.emp (14 documents) 2015-08-17T08:58:43.868+0900 done C:\MongoDB>mongorestore --objcheck --drop // Object 상태를 체크하여 이미 존재할 경우 삭제 후 복구 합니다. 2015-08-17T09:00:36.539+0900 using default 'dump' directory 2015-08-17T09:00:36.556+0900 building a list of dbs and collections to restore from dump dir 2015-08-17T09:00:36.558+0900 cannot drop system collection test.system.profile, skipping 2015-08-17T09:00:36.558+0900 reading metadata file from dump\test\system.profile.metadata.json 2015-08-17T09:00:36.559+0900 no indexes to restore 2015-08-17T09:00:36.559+0900 finished restoring test.system.profile (0 documents) 2015-08-17T09:00:36.560+0900 reading metadata file from dump\test\emp.metadata.json 2015-08-17T09:00:36.561+0900 restoring test.emp from file dump\test\emp.bson 2015-08-17T09:00:36.564+0900 restoring indexes for collection test.emp from metadata 2015-08-17T09:00:36.574+0900 finished restoring test.emp (14 documents) 2015-08-17T09:00:36.574+0900 done |
DB단위 복구입니다. 이 경우에는 복구 파일 Folder를 반드시 지정해 주어야 합니다.
C:\MongoDB>mongorestore --db test dump/test 2015-08-17T09:02:50.190+0900 building a list of collections to restore from dump\test dir 2015-08-17T09:02:50.197+0900 reading metadata file from dump\test\emp.metadata.json 2015-08-17T09:02:50.198+0900 reading metadata file from dump\test\system.profile.metadata.json 2015-08-17T09:02:50.198+0900 restoring test.emp from file dump\test\emp.bson 2015-08-17T09:02:50.198+0900 no indexes to restore 2015-08-17T09:02:50.199+0900 finished restoring test.system.profile (0 documents) 2015-08-17T09:02:50.202+0900 restoring indexes for collection test.emp from metadata 2015-08-17T09:02:50.203+0900 finished restoring test.emp (14 documents) 2015-08-17T09:02:50.203+0900 done |
Collecton 단위 복구 입니다. 이 경우네느 복구 파일 bson 파일을 지정해 주어야 합니다.
C:\MongoDB>mongorestore --db test --collection emp dump/test/emp.bson 2015-08-17T09:05:06.898+0900 checking for collection data in dump\test\emp.bson 2015-08-17T09:05:06.907+0900 reading metadata file from dump\test\emp.metadata.json 2015-08-17T09:05:06.907+0900 restoring test.emp from file dump\test\emp.bson 2015-08-17T09:05:06.969+0900 restoring indexes for collection test.emp from metadata 2015-08-17T09:05:06.970+0900 finished restoring test.emp (14 documents) 2015-08-17T09:05:06.970+0900 done |
참고로 bson 파일 내의 Data를 분석 할 수 있는 BsonDump 라는 Utlity가 있습니다.
C:\MongoDB>bsondump dump/test/emp.bson {"_id":{"$oid":"55d10eccd1610f52758ddbc4"},"deptno":20.0,"empno":7369.0,"ename":"SMITH","hiredate":"17-12-1980","job":"CLERK","sal":800.0} ... {"_id":{"$oid":"55d10eccd1610f52758ddbd1"},"deptno":10.0,"empno":7934.0,"ename":"CLERK","hiredate":"23-01-1982","job":"CLERK","sal":1300.0} 2015-08-17T09:07:43.020+0900 14 objects found C:\MongoDB>bsondump --type debug dump/test/emp.bson // Document 및 Field의 길이를 알 수 있습니다. --- new object --- size : 123 _id type: 7 size: 17 empno type: 1 size: 15 ename type: 2 size: 17 job type: 2 size: 15 hiredate type: 2 size: 25 sal type: 1 size: 13 deptno type: 1 size: 16 --- new object --- size : 140 ... |
1.2 MongoImport & MongoExport
다른 DBMS와 MongoDB 사이의 Data Migration에 사용되는 Utility 입니다.
MongoExport를 이용해서 MongoDB 내의 Data를 csv 파일로 다운로드해 보겠습니다.
C:\MongoDB>mongoexport -d test -c emp -o emp.csv --type=csv -f empno,ename,job,hiredate,sal,deptno 2015-08-17T09:18:14.647+0900 connected to: localhost 2015-08-17T09:18:14.654+0900 exported 14 records C:\MongoDB>more emp.csv empno,ename,job,hiredate,sal,deptno 7369,SMITH,CLERK,17-12-1980,800,20 7499,ALLEN,SALESMAN,20-02-1981,1600,30 7521,WARD,SALESMAN,22-02-1981,1250,30 7566,JONES,MANAGER,02-04-1981,2975,20 7654,MARTIN,SALESMAN,28-09-1981,1250,30 7698,BLAKE,MANAGER,01-05-1981,2850,30 7782,CLARK,MANAGER,09-06-1981,2450,10 7788,SCOTT,ANALYST,13-06-1987,3000,20 7839,PRESIDENT,CEO,17-11-1981,5000,10 7844,TURNER,SALESMAN,08-09-1981,1500,30 7876,ADAMS,CLERK,13-06-1987,1100,20 7900,JAMES,CLERK,03-12-1981,950,30 7902,FORD,ANALYST,03-12-1981,3000,20 7934,CLERK,CLERK,23-01-1982,1300,10 |
MongoImport를 이용하여 다시 업로드해 보겠습니다.
C:\MongoDB>mongoimport --db test --collection emp --type csv --headerline --file emp.csv 2015-08-17T09:24:08.843+0900 connected to: localhost 2015-08-17T09:24:08.853+0900 imported 14 documents |
csv 파일뿐 아니라 json 타입도 가능합니다.
C:\MongoDB>mongoexport -d test -c emp -o emp.json --type=json 2015-08-17T09:26:31.155+0900 connected to: localhost 2015-08-17T09:26:31.163+0900 exported 14 records C:\MongoDB>mongoimport --db test --collection emp --type json --file emp.json 2015-08-17T09:27:40.886+0900 connected to: localhost 2015-08-17T09:27:40.895+0900 imported 14 documents |
1.3 CopyDatabase & CloneDatabase
CopyDatabase는 특정 Database를 다른 이름으로 복사를 할 때 사용하는 명령어 이고,
CloneDatabase는 다른DB Instance로 동일한 이름으로 Database를 복사랄 때 하용하는 명령어 입니다.
> db.copyDatabase ('test' , 'test2', 'Host명') // 동일 Host인 경우 Host명 생략 가능 > db.cloneDatabas('Host명') // 현재 사용중인 Database를 해당 Host로 복사 |
2. 상태 Monitoring
2.1 MongoStat
MongoDB의 상태정보를 출력해주는 Utility 입니다.
- 초당 작업 회수
insert, query, update, delete, getmore, command, flushes(Fsync Flush)
- Memory 크기 및 관련 상태 값
mapped, vsize (Virtual Memory), res (Working Set Memory)
faults (초당 개수) , locked (%) , idx miss (Index Missing %),
- Network 및 Client 작업 관련
qr (Read 작업 Queue길이) , qw (Write 작업 Queue 길이),
ar (Read 작업 Active Client 수) , aw (Write 작업 Active Client 수),
netIn ( Received된 Network Traffic) , netOut (Send된 Network Traffic),
conn(Open Connection 수),
- Replica Set 관련
set (Replica Set 명칭),
repl (Replication 유형 : M(Master) , SEC(Secondary) , REC(Recovering), UNK(Unknown) , SLV(Slave)
C:\MongoDB>mongostat --rowcount 50 // 50개까지만 출력해주는 Option. 없으면 계속 출력 insert query update delete getmore command flushes mapped vsize res faults qr|qw ar|aw netIn netOut conn time *0 *0 *0 *0 0 1|0 0 240.0M 633.0M 68.0M 27 0|0 0|0 79b 10k 1 09:35:38 ... |
2.2 MongoTop
모든 Collection에 대한 Read/Write 현황에 대한 상태
C:\MongoDB>mongotop 5 // 매 5초마다 확인 2015-08-17T09:48:30.827+0900 connected to: 127.0.0.1 ns total read write 2015-08-17T09:48:35+09:00 admin.system.roles 0ms 0ms 0ms admin.system.version 0ms 0ms 0ms ... |
2.3 Web Monotoring
Mongod 가동시 --rest 옵션을 사용한 경우 Web Brower에서 접속하여 Monitoring이 가능합니다.
Defult Port는 28017로 설정되어 있습니다.
아래와 같이 Server 가동 후
mongod --dbpath c:/mongodb/test --rest |
Web Browser에서 http://localhost:28017 로 접속하면 확인이 가능합니다.
2.4 Log 수집 및 분석
mongod를 실행하면 console 창을 통해서 출력되는 log를 console 창에는 남기지 않고 file로 log를 남기는 옵션입니다.
mongod --dbpath c:/mongodb/test --logpath c:/mongodb/log/log.txt |
댓글 없음:
댓글 쓰기