基于quot;mongodb集群配置(sharding with replica set)quot;的集群,尝试在mongodb集群运行时动态添加分片复制集。
基于mongodb集群配置(sharding with replica set)的集群 (见 ),尝试在mongodb集群运行时动态添加分片复制集。
(1)启动复制集节点
分别执行如下3个批处理文件来启动3个mongod进程,,127.0.0.1:36000和127.0.0.1:36001以及127.0.0.1:36002.
批处理文件startshardd_0.bat:
cd d:/mongodb-win32-i386-1.8.0/bin
call mongod.exe --logpath d:/mongodb-win32-i386-1.8.0/logs/d/r0.log --logappend --dbpath d:/mongodb-win32-i386-1.8.0/data/d/r0 --port 36000 --shardsvr --replset setd --rest --oplogsize 64
批处理文件startshardd_1.bat:
cd d:/mongodb-win32-i386-1.8.0/bin
call mongod.exe --logpath d:/mongodb-win32-i386-1.8.0/logs/d/r1.log --logappend --dbpath d:/mongodb-win32-i386-1.8.0/data/d/r1 --port 36001 --shardsvr --replset setd --rest --oplogsize 64
批处理文件startshardd_2.bat:
cd d:/mongodb-win32-i386-1.8.0/bin
call mongod.exe --logpath d:/mongodb-win32-i386-1.8.0/logs/d/r2.log --logappend --dbpath d:/mongodb-win32-i386-1.8.0/data/d/r2 --port 36002 --shardsvr --replset setd --rest --oplogsize 64
(2)配置复制集
d:/mongodb-win32-i386-1.8.0/cmd>cd d:/mongodb-win32-i386-1.8.0/bin
d:/mongodb-win32-i386-1.8.0/bin>call mongo.exe 127.0.0.1:36000/admin
mongodb shell version: 1.8.0
connecting to: 127.0.0.1:36000/admin
> cfg = { _id:'setd', members:[
{ _id:0, host:'127.0.0.1:36000' },
{ _id:1, host:'127.0.0.1:36001' },
{ _id:2, host:'127.0.0.1:36002' }...
]};
{
_id : setd,
members : [
{
_id : 0,
host : 127.0.0.1:36000
},
{
_id : 1,
host : 127.0.0.1:36001
},
{
_id : 2,
host : 127.0.0.1:36002
}
]
}
> rs.initiate(cfg)
{
info : config now saved locally. should come online in about a minute.,
ok : 1
}
>
(3)添加到集群
cd d:/mongodb-win32-i386-1.8.0/bin
call mongo.exe 127.0.0.1:50000/admin
> db.runcommand({addshard:'setd/127.0.0.1:36000,127.0.0.1:36001,127.0.0.1:36002'})
{ shardadded : setd, ok : 1 }
(4)查看集群分片信息
> db.printshardingstatus()
--- sharding status ---
sharding version: { _id : 1, version : 3 }
shards:
{
_id : shardseta,
host : seta/127.0.0.1:10000,127.0.0.1:10001,127.0.0.1:10002
}
{
_id : shardsetb,
host : setb/127.0.0.1:20000,127.0.0.1:20001,127.0.0.1:20002
}
{
_id : shardsetc,
host : setc/127.0.0.1:30000,127.0.0.1:30001,127.0.0.1:30002
}
{
_id : setd,
host : setd/127.0.0.1:36000,127.0.0.1:36001,127.0.0.1:36002
}
databases:
{ _id : admin, partitioned : false, primary : config }
{ _id : wlb, partitioned : true, primary : shardseta }
wlb.wlb_orders chunks:
shardsetb 5
shardseta 4
shardsetc 5
{ order_id : { $minkey : 1 } } -->> { order_id : numberlong(1) } on : shardsetb { t : 5000, i : 1 }
{ order_id : numberlong(1) } -->> { order_id : numberlong(19943) } on : shardseta { t : 8000, i : 1 }
{ order_id : numberlong(19943) } -->> { order_id : numberlong(37015) } on : shardsetc { t : 7000, i : 1 }
{ order_id : numberlong(37015) } -->> { order_id : numberlong(54080) } on : shardsetb { t : 4000, i : 2 }
{ order_id : numberlong(54080) } -->> { order_id : numberlong(71148) } on : shardsetb { t : 4000, i : 4 }
{ order_id : numberlong(71148) } -->> { order_id : numberlong(88201) } on : shardseta { t : 5000, i : 2 }
{ order_id : numberlong(88201) } -->> { order_id : numberlong(105259) } on : shardsetc { t : 6000, i : 2 }
{ order_id : numberlong(105259) } -->> { order_id : numberlong(122284) } on : shardsetc { t : 6000, i : 4 }
{ order_id : numberlong(122284) } -->> { order_id : numberlong(139303) } on : shardsetc { t : 6000, i : 6 }
{ order_id : numberlong(139303) } -->> { order_id : numberlong(173354) } on : shardsetc { t : 6000, i : 8 }
{ order_id : numberlong(173354) } -->> { order_id : numberlong(207403) } on : shardseta { t : 7000, i : 2 }
{ order_id : numberlong(207403) } -->> { order_id : numberlong(241449) } on : shardseta { t : 7000, i : 4 }
{ order_id : numberlong(241449) } -->> { order_id : numberlong(275497) } on : shardsetb { t : 8000, i : 2 }
{ order_id : numberlong(275497) } -->> { order_id : { $maxkey : 1 } } on : shardsetb { t : 8000, i : 3 }
{ _id : adimin, partitioned : false, primary : shardseta }
至此,复制集setd就作为一个分片加入到集群中去了。