MongoDB 單一電腦實作分散式佈署

摘要:MongoDB 單一電腦實作分散式佈署

在單一臺,為了不浪費記憶體與硬碟空間的情況下,

我建立了三個mongod實體,與一個mongos做佈署。

由於mongod會建立 journal資料夾,此資料夾,至少會需要3G 的硬碟空間,否則不給建立。

所以要佈署一個環境,

覺得應該至少,要9G的樣子。

 

我在單一臺實作,

shard + replset 使用 2個mongod

mongod -port 10001 及mongod -port 10003

10003使用來當作投票使用,所以是仲裁者,所以所有資料只存在單一mongod上。

而config只建立一個

mongod -port 20001

 

mongos 只連一個config

 

最簡的架構下,建立shell script 只要以下四行


export PATH=$PATH:/var/mongodb/bin

mongod -fork -shardsvr -port 10001 -replSet Shard01 --dbpath /var/mongodb/database/r1 --logpath /var/mongodb/log/r1 --nohttpinterface --smallfiles
mongod -fork -shardsvr -port 10003 -replSet Shard01 --dbpath /var/mongodb/database/r3 --logpath /var/mongodb/log/r3 --nohttpinterface --smallfiles
mongod -fork --configsvr --dbpath /var/mongodb/database/config1 --port 20001 --logpath /var/mongodb/log/config1 --nohttpinterface --smallfiles
mongos -fork --logpath /var/mongodb/log/routeServer --configdb 127.0.0.1:20001 --port 27017 -chunkSize 1

 

建立replset


use admin
config = {_id:'Shard01',members:[{_id:0,host:'127.0.0.1:10001',priority:1},,{_id:2,host:'127.0.0.1:10003',arbiterOnly:true}]}
rs.initiate(config)
rs.status()

mongo -port 10001
db.getMongo().setSlaveOk();

mongo -port 10003
db.getMongo().setSlaveOk();

 

建立Sharding


db.runCommand({addShard:"Shard01/127.0.0.1:10001,127.0.0.1:10003"})
db.runCommand({enablesharding:"testdb"})
db.printShardingStatus()