上面两篇博客都是关于mongodb的集群的配置,没有涉及到分布式,该片博客就是写mongodb的分布式,把一个整体,分成多个片,每个片部署到不同的服务器上,这个就是mongodb的分布式,即:mongodb的分片操作。
mongos服务器做的是路由服务器,config服务器就是保存相应配置的服务器,shard1和shard2就是分片服务器,这两个服务器合在一起才是一个整体,而mongos服务器就是他们的和点,所以,我们客户端只需要和mongos服务器交互就可以了,后面的,服务器自己会将相应的信息存放到不同的片服务器上。
//启动shard服务器 mongod --dbpath C:\Mongodb\data\shard1 mongod --dbpath C:\Mongodb\data\shard2 //启动config服务器 mongod --dbpath C:\Mongodb\data\config --port 27017 //启动mongos服务器(chunkSize:当分片插入大于1M时,开始进行数据转移,默认200MB) mongos --port 27017 --configdb 192.168.24.125:27017 --chunkSize 1 //登录mongos服务器,添加shard服务器(allowLocal允许本地部署多个分片,默认不允许) use admin db.runCommand({addshard : "192.168.24.42:27017", allowLocal : true}) db.runCommand({addshard : "192.168.24.252:27017", allowLocal : true}) //登录mongos服务器,开启数据库分片功能,并指定集合的分片片键 db.runCommand({enablesharding : "DBName"}) db.runCommand({shardcollection:"DBName.CName",key:{fieldName:1}}) //数字代表排序这里需要注意,一定要指定集合的分片的片键,这个键就是将这个整体分成部分的关键。此时我们可以做一些测试操作,登录mongos服务器,输入相应的测试数据,然后,分别登上不同的片服务器,看看里面的内容,你就明白了。测试数据等其他方面的命令如下
for(var i=0;i<100000;i++){ db.perons.insert({id:i, name:"qingshan"+i})}//测试数据 片节点操作 //移除非主分片,第一次转移数据,第二次删 db.runCommand({"removeshard" : "192.168.24.42:27017"}); db.runCommand({"removeshard" : "192.168.24.42:27017"}); //添加分片(须先删除数据库) db.runCommand({addshard : "192.168.24.42:27017", allowLocal : true}) //移除主分片,第一次设置主分片,第二次删 db.runCommand({"moveprimary" : "192.168.24.42:27017"}); db.runCommand({"removeshard" : "192.168.24.252:27017"}); db.runCommand({listshards:1}) //分片信息 db.printShardingStatus() //分片状态 use config db.shards.find() //分片服务器信息 db.chunks.find() //分片信息