此次測試對象主機為三台,分別是 mongodb-test1 mongodb-test2 mongodb-test3
當然進行設定前要把mongodb裝好,安裝請參考 http://charleslin74.pixnet.net/blog/post/388879655
首先我們將 mongodb-test1做為primary的主機,對它進行設定
#vi /etc/mongodb.conf
找到這一行 #replSet = xxxxx ,將 # 拿掉並於 = 後改為你所命名的群組,如下
replSet = mydb
更改完後將mongo 重新啟動,以載入新設定
#servcie mongodb restart
使用mongo指令進入命令控制模式
#mongo
初始化 replSet
> rs.initiate(null)
於 replSet中加入自己本機
> rs.add("mongodb-test1:27017")
若是回應成功,請先稍待數秒鐘,等伺服器偵測和初使化。然後會發現 MongoDB 的命令提示字元從『SECONDARY』變成『PRIMARY』,此時,代表這台機器已經變成 replSet 中的主要機器。
接著對二台secondary主機皆進行以下設定,並重啟mongo服務
#vi /etc/mongodb.conf
找到這一行 #replSet = xxxxx ,將 # 拿掉並於 = 後改為你所命名的群組,如下
replSet = mydb
更改完後將mongo 重新啟動,以載入新設定
#servcie mongodb restart
最後於primary主機中將二台secondary主機加入 replSet
mydb:PRIMARY> rs.add("mongodb-test2:27017")
mydb:PRIMARY> rs.add("mongodb-test3:27017")
至此replSet的設定就完成了,我們可以使用下列指令觀看replSet的資訊
mydb:PRIMARY> rs.conf()
下為資訊
{
"_id" : "mydb",
"version" : 3,
"members" : [
{
"_id" : 0,
"host" : "mongodb-test1:27017"
},
{
"_id" : 1,
"host" : "mongodb-test2:27017"
},
{
"_id" : 2,
"host" : "mongodb-test3:27017"
}
]
}
mydb:PRIMARY> rs.status()
下為資訊
{
"set" : "mydb",
"date" : ISODate("2014-09-03T08:22:51Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "mongodb-test1:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 164,
"optime" : Timestamp(1409731610, 1),
"optimeDate" : ISODate("2014-09-03T08:06:50Z"),
"self" : true
},
{
"_id" : 1,
"name" : "mongodb-test2:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 164,
"optime" : Timestamp(1409731610, 1),
"optimeDate" : ISODate("2014-09-03T08:06:50Z"),
"lastHeartbeat" : ISODate("2014-09-03T08:22:51Z"),
"lastHeartbeatRecv" : ISODate("2014-09-03T08:22:50Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "syncing to: mongodb-test1:27017",
"syncingTo" : "mongodb-test1:27017"
},
{
"_id" : 2,
"name" : "mongodb-test3:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 82,
"optime" : Timestamp(1409731610, 1),
"optimeDate" : ISODate("2014-09-03T08:06:50Z"),
"lastHeartbeat" : ISODate("2014-09-03T08:22:51Z"),
"lastHeartbeatRecv" : ISODate("2014-09-03T08:22:51Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "syncing to: mongodb-test1:27017",
"syncingTo" : "mongodb-test1:27017"
}
],
"ok" : 1
}