블로그 이미지
LifeisSimple

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2011. 1. 25. 18:33 Brain Trainning/NoSQL
MongoDB의 간단한 백업은... 

1. 백업을 하고

[root@searchapp mongodb]# mongodump -d newDB -o /usr/mongodb/backup

connected to: 127.0.0.1

DATABASE: newDB  to     /usr/mongodb/backup/newDB

        newDB.test to /usr/mongodb/backup/newDB/test.bson

                 1 objects

        newDB.system.indexes to /usr/mongodb/backup/newDB/system.indexes.bson

                 1 objects


2. Restore 를 합니다. 

-- DB를 삭제를 하고... 

> db.dropDatabase()

{ "dropped" : "newDB", "ok" : 1 }

> show dbs

admin

fileSize

local

test

> exit

bye

-- 콘솔에서 MongoRestore 를 사용해 Restore 를 합니다.

[root@searchapp bin]# mongorestore -d newDB --drop /usr/mongodb/backup/newDB/

connected to: 127.0.0.1

Tue Jan 25 20:51:24 /usr/mongodb/backup/newDB/test.bson

Tue Jan 25 20:51:24      going into namespace [newDB.test]

Tue Jan 25 20:51:24      dropping

Tue Jan 25 20:51:24      1 objects found

Tue Jan 25 20:51:24 /usr/mongodb/backup/newDB/system.indexes.bson

Tue Jan 25 20:51:24      going into namespace [newDB.system.indexes]

Tue Jan 25 20:51:24      dropping

Tue Jan 25 20:51:25      1 objects found

-- 접속해서 보면 복원되어 있습니다. 

[root@searchapp bin]# mongo

MongoDB shell version: 1.6.5

connecting to: test

> show dbs

admin

fileSize

local

newDB

test


3. 특정시점의 데이터 백업

--- Fsync 를 통해서 insert 를 하지 않도록 하고 

> use admin

switched to db admin

> db.runCommand({"fsync":1, "lock":1})

{

        "info" : "now locked against writes, use db.$cmd.sys.unlock.findOne() to unlock",

        "ok" : 1

}

> use newDB

switched to db newDB

> show collections

system.indexes

test

> db.test.insert({"name":"Koon", age:37})

 

 --------------- Lock 이 걸려 있습니다. -------------------------------

> 


-- 외부에서 콘솔을 열고... 

몽고로 들어가서 "db.$cmd.sys.unlock.findOne()" 를 가볍게 실행해주면... admin에서

Lock 이 풀립니다.


Fsync 는 MSSQL의 Checkpoint 와 유사한 개념입니다. (기능)

posted by LifeisSimple