mongodb를 replica 모드로 시작할 때, 먼저 mongdob떠서 실행되는 노드가 master이다. 그리고 rs.initiate(config)를 실행하여 replica를 실행한다.

mongodb에서 다른 노드로 master로 변경하려면 priority를 상대적으로 제일 높은 값을 주어야 변경이 된다.

 
priority는 0부터 1000까지 주어질 수 있으며, 0으로 설정하면 무조건 secondary가 되며, master가 안되게 하는 의미이다.

다시 처음으로 돌아가서 처음 mongodb를 재시작할 때, master는 처음 실행되는 master가 될 것이다.
디폴트 값은 문서에서 1로 정해져 있으나, 3.0.6으로 실행시 master는 master는 3이고, slave는 2로 설정되었다.

master를 바꾸려면 priority를 변경하면 된다.

config = rs.conf()
config.members[0].priority = 100
config.members[1].priority = 200
config.members[2].priority = 300
rs.reconfig(config)

또는 아래와 같이 실행한다. 

var config = { _id: \"replset\", members: [ { _id: 0, host: \”1.1.1.1:27017\”,priority:100 }, { _id: 1, host: \”1.1.1.2:27017\",priority:200 }, { _id: 3, host: \"1.1.1.3:27017\",priority:300 } ] }; rs.reconfig(config);


priority가 높은 노드가 master가 된다.
하지만, 각 노드에 rs.status()를 실행하면 master 여부가 나타나지 않는 부분이 존재한다. 

그래서, db.isMaster()를 호출하면 master 여부를 확인할 수 있다. 

printjson(db.isMaster())

1.1.1.1
{ isMaster: 0 }
1.1.1.2
{ isMaster: 0 }
1.1.1.3
{ isMaster: 1 }


* 참고 
https://docs.mongodb.org/manual/core/replica-set-priority-0-member/
https://docs.mongodb.org/manual/reference/command/replSetGetConfig/#replSetGetConfig.members%5Bn%5D.priority
https://docs.mongodb.org/manual/core/replica-set-primary/

https://docs.mongodb.org/manual/reference/command/isMaster/


'mongodb' 카테고리의 다른 글

[mongodb] _id, ObjectId  (0) 2015.11.09
[mongodb] 레플리카 구성 요소  (0) 2015.11.02
[mongodb] replica set 만들기  (0) 2015.10.26
[mongodb] explain  (0) 2015.10.12
[mongodb] collection 개수 구하기  (0) 2015.10.12
Posted by '김용환'
,