mongodb replica sets 測試

babyyellow發表於2011-05-31

單機完成了 replica sets 的部署測試
過程與單機差不多,比較簡單

10.239

cd /data/mongodb/mongodb
mkdir data_17 data_18 data_19

bin/mongod --rest --replSet myset --dbpath /data/mongodb/mongodb/data_17 --port 27017 --fork --logpath /data/mongodb/mongodb/data_17/std.log

bin/mongod --rest --replSet myset --dbpath /data/mongodb/mongodb/data_18 --port 27018 --fork --logpath /data/mongodb/mongodb/data_18/std.log

bin/mongod --rest --replSet myset --dbpath /data/mongodb/mongodb/data_19 --port 27019 --fork --logpath /data/mongodb/mongodb/data_19/std.log

cfg={

"_id" : "myset",
"version" : 1,
"members" : [

{

"_id" : 0,
"host" : "192.168.10.239:27018"

},
{

"_id" : 1,
"host" : "192.168.10.239:27019"

},
{

"_id" : 2,
"host" : "192.168.10.239:27017"

},

]

}

bin/mongo

use admin

rs.initiate(cfg)

等待一會,系統紫銅同步完成。 系統會自動仲裁一個master

對其中一個庫做
use admin

db.runCommand({fsync:1})

然後另一個開始備份資料檔案

mkdir data_20
cp ../data_17/* .

完成後

向叢集中追加一個節點

bin/mongod --rest --replSet myset --dbpath /data/mongodb/mongodb/data_20 --fastsync --port 27020 --fork --logpath /data/mongodb/mongodb/data_20/std.log

主意引數加了 --fastsync 選項

master 執行

rs.add("192.168.10.239:27020")

過一會 新節點加入叢集。

rs.status()

rs.status()

{

"set" : "myset",
"date" : ISODate("2011-05-31T09:18:29Z"),
"myState" : 2,
"members" : [

{

"_id" : 0,
"name" : "192.168.10.239:27018",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 290,
"optime" : {

"t" : 1306818572000,
"i" : 47

},
"optimeDate" : ISODate("2011-05-31T05:09:32Z"),
"lastHeartbeat" : ISODate("2011-05-31T09:18:29Z")

},
{

"_id" : 1,
"name" : "192.168.10.239:27019",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 2,
"optime" : {

"t" : 1306818572000,
"i" : 47

},
"optimeDate" : ISODate("2011-05-31T05:09:32Z"),
"lastHeartbeat" : ISODate("2011-05-31T09:18:29Z")

},
{

"_id" : 2,
"name" : "192.168.10.239:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"optime" : {

"t" : 1306818572000,
"i" : 47

},
"optimeDate" : ISODate("2011-05-31T05:09:32Z"),
"self" : true

},
{

"_id" : 3,
"name" : "192.168.10.239:27020",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 290,
"optime" : {

"t" : 1306818572000,
"i" : 47

},
"optimeDate" : ISODate("2011-05-31T05:09:32Z"),
"lastHeartbeat" : ISODate("2011-05-31T09:18:29Z")

}

],
"ok" : 1

}

手工關閉master 會自動的重新選出一個master 。

重新啟動後,會自動加入到叢集中,追加完日誌後,狀態變為secondery

客戶端程式碼,如果要查詢slave 需要指定slaveok()

rs.slaveok()

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-696815/,如需轉載,請註明出處,否則將追究法律責任。

相關文章