摘要: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()