[MongoDB] 복제 셋 (Replica set)

-- MongoDB 2013. 1. 14. 16:45
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

복제를 시험하기 위해, mongod를 master 용 slave용으로 각각 기동시킵니다.


1. master서버 시작


mongod --master --dbpath /var/tmp/master


2. slave서버 시작


mongod --slave --port 27018 --source localhost --dbpath /var/tmp/slave


slave는 --source 옵션으로 대상이 되는 master서버의 domain or ip와 port를 지정합니다.


또는 --source 옵션을 지정하는 대신 slave 측에서 직접 master 정보를 편집해도 됩니다. 

이 경우 sources 컬렉션에 추가합니다. 

여러개를 추가하여 복수의 master로 부터 복제시킬 수도 있습니다.


$ bin/mongo --port 27018 // slave에 접속

> use local

> db.sources.insert({host: "localhost:27017"})

> db.sources.insert({host: "192.168.xxx.xxx:27017"}) // 복수 추가도 가능


해당 mongo서버가 slave인지 여부 어떤 master를 보고있는가? 등도 sources를 보면 알 수 있습니다. 


$ bin/mongo --port 27018 // slave에 접속

> use local

> db.sources.find({}, {host: 1})

// { "_id" : ObjectId("4bc030a343a4b90b52718a75"), "host" : "localhost"}


MongoDB 1.3.3 이상에서는 휴먼 에러 대책으로 slave 측에 복제를 일부러 늦출 수도 있다고 합니다. 


- slavedelay 옵션 master에서 slave에 지연 시간을 초 단위로 지정할 수있는 것 같습니다. 데이터의 양이 그리 많지 않으면 아무것도 문제 없습니다만 복제가 대량으로 늦은 경우 복제가 중단되는 것 같습니다. 



(생략... 원본 참조)



복제가 중단되고 버리면 {resync : 1}으로 직접 동작 시킬수 있습니다. 그 후 제대로 복제가 시작되었습니다.


$ bin/mongo --port 27018 // slave에 접속

> use admin

> db.runCommand({resync: 1})


출처 : http://blog.naver.com/PostView.nhn?blogId=parkjy76&logNo=30115080971


'-- MongoDB' 카테고리의 다른 글

[MongoDB] 백업과 복구  (0) 2013.01.14
[MongoDB] 저장 자바스크립트  (0) 2013.01.08
[MongoDB] Database 명령어  (0) 2013.01.08
[MongoDB] 집계  (0) 2013.01.07
[MongoDB] 초보자를 위한 보안 관련 Tips  (0) 2013.01.07
posted by 어린왕자악꿍