mongodb分片(sharding)搭建、应用及管理

1.启动shard server
# mkdir -p /data/shard/s0
# mkdir -p /data/shard/s1
# mkdir -p /data/shard/log

# cd /usr/local/mongodb/bin
# ./mongod –shardsvr –port 20000 –dbpath /data/shard/s0 –fork –logpath /data/shard/log/s0.log –directoryperdb
# ./mongod –shardsvr –port 20001 –dbpath /data/shard/s1 –fork –logpath /data/shard/log/s1.log –directoryperdb

2.启动config server
# mkdir -p /data/shard/config
# cd /usr/local/mongodb/bin
# ./mongod –configsvr –port 30000 –dbpath /data/shard/config –fork –logpath /data/shard/log/config.log –directoryperdb

3.启动route process
# /usr/local/mongodb/bin/mongos –prot 40000 –configdb localhost:30000 –fork –logpath /data/shard/log/route.log –chunkSize 1

4.配置sharding
# /usr/local/mongodb/bin/mongo admin –port 40000
> db.runCommand({addshard:”localhost:20000″})
> db.runCommand({addshard:”localhost:20001″})
> db.runCommand({enablesharding:”test”})
> db.runCommand({shardcollection:”test.users”,key:{_id:1}})

5.验证sharding
# /usr/local/mongodb/bin/mongo admin –port 40000
> use test
> for(var i=1;i<=500000;i++) db.users.insert({age:i,name:”smith”,addr:”newyork”,country:”america”})
> db.users.stats()
> exit
# ll /data/shard/s0/test
# ll /data/shard/s1/test

6.维护sharding
1)列出所有shard server
# /usr/local/mongodb/bin/mongo admin –port 40000
> db.runCommand({listshards:1})

2)查看sharding信息
# /usr/local/mongodb/bin/mongo admin –port 40000
> printShardingStatus()

3)查看特定实例是否为shard server
# /usr/local/mongodb/bin/mongo admin –port 20001
> db.runCommand({isdbgrid:1})

4)对现有表进行sharding
# /usr/local/mongodb/bin/mongo admin –port 40000
> use test
> db.users_2.stats()
> use admin
> db.runCommand({shardcollection:”test.users_2″,key{_id:1}})
> use test
> db.users_2.stats()

5)新增shard server
# mkdir /data/shard/s2
# /usr/local/mongodb/bin/mongod –shardsvt –port 20002 –dbpath /data/shard/s2 –fork –logpath /data/shard/log/s2.log –directoryperdb
# /usr/local/mongodb/bin/mongo admin –port 40000
> db.runCommand({addshard:”localhost:20002″})
> use test
> db.users_2.stats()

6)移除shard server
# /usr/local/mongodb/bin/mongo admin –port 40000
>use admin
> db.runCommand({removeshard:”localhost:20002″})
–可反复运行该命令,直到shard server服务器移除,期间,state值:started–>ongoing,直到最后errmsg:db assertion failure,表示该shard server移除成功.
> use test
> db.users_2.stats()