MongoDB的分片

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Stubborn_Cow/article/details/52316155

一,分片
1,启动shard、config、mongos节点
(1),启动需要分片的节点
        启动3个mongodb的实例

mongod --shardsvr --dbpath=/usr/local/mongodb/data1 --logpath=/usr/local/mongodb/log/data1.log --port=27081 --fork
mongod --shardsvr --dbpath=/usr/local/mongodb/data2 --logpath=/usr/local/mongodb/log/data2.log --port=27082 --fork
mongod --shardsvr --dbpath=/usr/local/mongodb/data3 --logpath=/usr/local/mongodb/log/data3.log --port=27083 --fork

(2),启动config
        启动1个mongodb的实例,这里其实也是普通的DB,不过是新建了config库,里面保存了路由的信息
mongod --configsvr --dbpath=/usr/local/mongodb/config --logpath=/usr/local/mongodb/log/config.log --port=27001 --fork

(3),启动mongos
         这里启动一个mongos进程,用来做数据的路由,访问的入口,而数据是保存在config里的。
mongos --configdb 10.1.2.197:27001 --logpath=/usr/local/mongodb/log/configdb.log --port=27002 --fork


也可以使用配置文件启动

(1),启动需要分片的节点

(2),启动config

(3),启动mongos

配置文件


2,配置分片
(1),进入mongos

mongo admin --port 27002

(2),用addshard添加到路由器中
db.runCommand({addshard:"10.1.2.197:27081"})
db.runCommand({addshard:"10.1.2.197:27082"})
db.runCommand({addshard:"10.1.2.197:27083"})

(3),指定分片的数据库
db.runCommand({"enablesharding":"userdb"})

(4),指定分片的键
 db.runCommand({shardcollection:"userdb.order",key:{_id:1}})

3,查看状态
db.printShardingStatus()

第一:shards 从图中可以看到:分成三片了,shard0000、shard0001、shard0002。

扫描二维码关注公众号,回复: 3340364 查看本文章

第二:databases:partitioned表示是否分区,可以看到userdb已分区。

第三:chunks:分成了一段。都在shard0000。


db.order.stats()


4,测试

mongos> for(var i =1;i<10000;i++){ db.order.insert({id:100+i,name:"name"+i,age:i}) }


可以看到,自动分片的结果并不是平均的。

猜你喜欢

转载自blog.csdn.net/Stubborn_Cow/article/details/52316155