mongodb
[mongodb] replica set 만들기
'김용환'
2015. 10. 26. 22:02
mongodb에서 cluster를 만들려면 rs.initiate() 함수를 쓰라고 한다. 막상 mongo 커맨드를 실행하면 다음과 같이 설정이 있어야 하는지 알려준다.
> rs.initiate()
{
"info2" : "no configuration explicitly specified -- making one",
"me" : "alpha.google.com:27017",
"ok" : 1
}
아래 url을 참조해서 클러스터를 만든다.
https://docs.mongodb.org/master/tutorial/reconfigure-replica-set-with-unavailable-members/
아래와 같이 config 설정을 생성한 후, 초기화한다.
> config = {
_id : "replset",
members : [
{_id : 0, host : "1.1.1.1:27017"},
{_id : 1, host : "1.1.1.2:27017"},
{_id : 2, host : "1.1.1.3:27017"},
]
}
> rs.initiate(config)
만약 수정할 일이 있으면, 다음과 같이 진행한다.
> cfg = {
_id : "replset",
members : [
{_id : 0, host : "1.1.1.1:27017"},
{_id : 1, host : "1.1.1.2:27017"},
{_id : 2, host : "1.1.1.4:27017"},
]
}
> rs.reconfig(cfg, {force : true})
정상적으로 레플리카 설정이 되었는지 확인하려면, rs.conf() 또는 rs.status()를 통해 확인한다.
> rs.conf()
{
"_id" : "replset",
"version" : 89449,
"members" : [
{
"_id" : 0,
"host" : "1.1.1.1:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : 0,
"votes" : 1
},
{
"_id" : 1,
"host" : "1.1.1.2:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : 0,
"votes" : 1
},
{
"_id" : 2,
"host" : "1.1.1.3:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : 0,
"votes" : 1
}
],
..
> rs.status()
{
"set" : "replset",
"date" : ISODate("2015-09-22T07:16:41.678Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "1.1.1.1:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 1961,
"optime" : Timestamp(1442904540, 1),
"optimeDate" : ISODate("2015-09-22T06:49:00Z"),
"electionTime" : Timestamp(1442904540, 2),
"electionDate" : ISODate("2015-09-22T06:49:00Z"),
"configVersion" : 89449,
"self" : true
},
{
"_id" : 1,
"name" : "1.1.1.2:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 1338,
"optime" : Timestamp(1442904540, 1),
"optimeDate" : ISODate("2015-09-22T06:49:00Z"),
"lastHeartbeat" : ISODate("2015-09-22T07:16:39.850Z"),
"lastHeartbeatRecv" : ISODate("2015-09-22T07:16:39.849Z"),
"pingMs" : 0,
"configVersion" : 89449
},
{
"_id" : 2,
"name" : "1.1.1.3:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 1338,
"optime" : Timestamp(1442904540, 1),
"optimeDate" : ISODate("2015-09-22T06:49:00Z"),
"lastHeartbeat" : ISODate("2015-09-22T07:16:39.850Z"),
"lastHeartbeatRecv" : ISODate("2015-09-22T07:16:39.852Z"),
"pingMs" : 0,
"configVersion" : 89449
}
],
"ok" : 1
}