作者:冲绳草莽英雄_266 | 来源:互联网 | 2014-05-28 16:53
mongodbauto-sharding分片优点在于可以存储海量的数据并且可以扩容。支持动态添加或移除sharding,添加shard时,mongo会自动将部分数据转移到新的分片上。移除shard时,mongo会自动将此分片上的数据转移到其它分片上分片包括3种服务器:1.分片服务器:存
mongodb auto-sharding分片优点在于可以存储海量的数据并且可以扩容。
支持动态添加或移除sharding,添加shard时,mongo会自动将部分数据转移到新的分片上。
移除shard时,mongo会自动将此分片上的数据转移到其它分片上
分片包括3种服务器:
1.分片服务器:存储实际的分片数据
2.配置服务器:存储所有shard节点的配置信息、每个chunk的shard
key范围、chunk在各shard的分布情况、该集群中所有db和collection的sharding配置信息
3.路由服务器:询问配置服务器,上哪个分片服务器上进行查询或写入等操作。
#./shard1.conf 配置实例:
dbpath = d:/mongodb/shard/data/service1
logpath = d:/mongodb/shard/log/log1.log
shardsvr = true
logappend = true
port = 20001
rest=true
#./config.conf 配置实例:
dbpath = d:/mongodb/shard/data/config
logpath = d:/mongodb/shard/log/config.log
cOnfigsvr= true
logappend = true
port = 30001
rest=true
#./mongos.conf 配置实例
logpath = d:/mongodb/shard/log/mongos.log
cOnfigdb= localhost:30001
logappend = true
port = 40001
chunkSize =
1
#设置chunk大小。以兆为单位
#配置并启动mongo服务
cmd:>
mongod -f d:/mongodb/shard/shard1.conf
cmd:>
mongod -f d:/mongodb/shard/shard2.conf
cmd:>
mongod -f d:/mongodb/shard/config.conf
cmd:>
mongos -f d:/mongodb/shard/mongos.conf
mongo:>mongo admin --port
40001
#连接到mongos的admin库
mongo:>db.runCommand({addshard:"localhost:20001"})
#添加分片服务器
mongo:>db.runCommand({addshard:"localhost:20002"})
#添加分片服务器
mongo:>db.runCommand({enablesharding:"test"})
#设置要分片的数据库
mongo:>db.runCommand({shardcollection:"test.users",key:{_id:1}})
#设置分片的集合名称,且必须指定shard key.系统自动创建索引
mongo:>for (var i=1;i<=500000;i++)
db.users.insert({age:i,name:"test",addr:"shanghai",country:"China"})
mongo:>db.users.stats();
#查看表的状态,包括是否分片,分片上数据大小等等。
mongo:>db.runCommand({listshards:1})
#列出所有的 shard server.
mongo:>printShardingStatus()
#查看sharding信息
mongo:>db.runCommand({isdbgrid:1})
#判断是否是sharding
mongo:>db.runCommand({shardcollection:"test.users2",key:{_id:1}})
#对user2的集合进行分片
#新增|删除shard server
cmd:>
mongod -f d:/mongodb/shard/shard3.conf
mongo:>mongo admin --port
40001
#连接到mongos的admin库
mongo:>db.runCommand({addshard:"localhost:20003"})
#添加分片服务器
mongo:>db.runCommand({removeshard:"localhost:2003"})
#移除分片服务器