下面的配置是在同一台机器上的,我是在32位的xp下测试的,因为在32位的机器有2G数据大小的限制,数据量不会太大。
这里配置两个replica set,每个replica set有三个shard,即三份数据。
配置第一组:三个shard,同属于一个replica set,即一份数据会有两个备份数据和一个主数据,共三份
./bin/mongod --shardsvr --logpath ./logs/sharda.log --logappend --dbpath ./data/a/r0 --port 10000 --rest --replSet set1 &
./bin/mongod --shardsvr --logpath ./logs/sharda.log --logappend --dbpath ./data/a/r1 --port 10001 --rest --replSet set1 &
./bin/mongod --shardsvr --logpath ./logs/sharda.log --logappend --dbpath ./data/a/r2 --port 10002 --rest --replSet set1 &
./bin/mongo --port 10000
cfg = {_id: 'set1', members:[
{_id: 0, host: 'localhost:10000'},
{_id: 1, host: 'localhost:10001'},
{_id: 2, host: 'localhost:10002'}]
}
rs.initiate(cfg);
rs.status()
配置第二组,三个shard,分别作为三个replica set
./bin/mongod --shardsvr --logpath ./logs/shardb.log --logappend --dbpath ./data/b/r3 --port 10010 --rest --replSet set2 &
./bin/mongod --shardsvr --logpath ./logs/shardb.log --logappend --dbpath ./data/b/r4 --port 10011 --rest --replSet set2 &
./bin/mongod --shardsvr --logpath ./logs/shardb.log --logappend --dbpath ./data/b/r5 --port 10012 --rest --replSet set2 &
./bin/ mongo --port 10010
cfg = {_id: 'set2', members:[
{_id: 0, host: 'localhost:10010'},
{_id: 1, host: 'localhost:10011'},
{_id: 2, host: 'localhost:10012'}]
}
rs.initiate(config);
rs.status()
配置config server:
./bin/mongod --configsvr --dbpath ./data/config/ --port 20000 --rest --logpath /logs/config.log --logappend &
配置mongos route:
./bin/mongos --configdb localhost:20000 --chunkSize 10 --logpath ./logs/mongos.log --logappend &
配置shard:
use admin
db.runCommand({addshard:'set1/localhost:10000,localhost:10001,localhost:10002'})
db.runCommand({addshard:'set2/localhost:10010,localhost:10011,localhost:10013'})
db.runCommand({enablesharding:'crawler'})
db.runCommand({shardcollection:'crawler.videos', key:{_id:1}})
db.runCommand({listshards:1})
printShardingStatus()
另外可以进入其中一个shardsvr,查看replica set 的情况:
./bin/mongo --port 10000
rs.status() 命令会显示set的信息。
其中,health为1表明服务器正常,0表明服务器down了
state为1表明是Primary,2表明是Secondary,3是Recovering,7是Arbiter,8是Down