04-26 06:21
Notice
Recent Posts
Recent Comments
관리 메뉴

Scientific Computing & Data Science

[MongoDB] Replication / Replication State & Local DB 본문

Data Science/MongoDB

[MongoDB] Replication / Replication State & Local DB

cinema4dr12 2014. 4. 9. 17:30

by Geol Choi | 

마스터 또는 슬레이브 노드 모두에 대하여 다음과 같이 명령을 입력해 보자:

> show dbs
admin  (empty)
local  0.078GB

 DB 리스트를 살펴보면 최소한 adminlocal이 존재할 것이다. local은 로컬 데이터베이스로써 마스터 노드와 슬레이브 노드에 모두 존재하며 복제와 관련된 상태 정보가 저장되어 있으며, 로컬이라는 이름대로 로컬 노드에만 저장되며 복제되지 않는다.

마스터 노드(포트 번호 3000이라고 가정)와 슬레이브 노드(포트 번호 3001이라고 가정)에 대한 각각의 local DB의 내용을 살펴보자:

마스터 노드:

> use local
switched to db local
> db.getCollectionNames()
[ "oplog.$main", "slaves", "startup_log", "system.indexes" ]
> db.slaves.find().pretty()
{
        "_id" : ObjectId("5345047cd8b2b6867fc017f5"),
        "config" : {
                "host" : "127.0.0.1:52627",
                "upgradeNeeded" : true
        },
        "ns" : "local.oplog.$main",
        "syncedTo" : Timestamp(1397032697, 1)
}
{
        "_id" : ObjectId("5345048241718ff4bcf3758d"),
        "config" : {
                "host" : "127.0.0.1:52628",
                "upgradeNeeded" : true
        },
        "ns" : "local.oplog.$main",
        "syncedTo" : Timestamp(1397032697, 1)
}

슬레이브 노드:

> use local
switched to db local
> db.getCollectionNames()
[ "me", "sources", "startup_log", "system.indexes" ]
> db.sources.find().pretty()
2014-04-09T17:39:17.113+0900 TypeError: Object DBQuery: local.sources -> { } has no method 'pretyy'
> db.sources.find().pretty()
{
        "_id" : ObjectId("5345047dd8b2b6867fc017f6"),
        "host" : "localhost:3000",
        "source" : "main",
        "syncedTo" : Timestamp(1397032657, 1)
}

위의 내용을 살펴보면, 마스터 노드의 local  DB에는 slaves라는 컬렉션이 존재하며 현재 이 마스터 노드에 연결된 슬레이브 노드에 대한 정보가 저장되어 있다.

또한 슬레이브 노드의 local DB에는 sources라는 컬렉션이 존재하며 이 슬레이브 노드에 대한 마스터 노드의 정보가 저장되어 있다.

두 컬렉션 모두 syncedTo라는 키가 존재하는데 이는 최신으로 업데이트 된 타임스탬프가 기록되어 있다.

Comments