mongoDB的分片。要mongos查询数据时候 先查询configsvr看数据在那台shard上,configsvr上边放的是metar信息,指的是那条数据在那个片上。由此可以看出mongo在做分片的时候咱们至少要有一个configsvr,和两个以上的shard(片)信息。
第一步启动两台以上的mongo服务
./bin/mongod --dbpath /home/m17 --logpath /home/log/log17.log --fork --port 27017
./bin/mongod --dbpath /home/m18 --logpath /home/log/log18.log --fork --port 27018
第二步 启动 一个configsvr
./bin/mongod --dbpath /home/m19 --logpath /home/log.m19.log --fork --port 27019 --configsvr
第三部启动一个mongos
./bin/mongos --configdb 192.168.1.12:27019 --logpath /home/log/log20.lg --port 40000
第四部链接上mongos
./bin/mongo --port 40000
sh.addShard('192.168.1.202:27017')
sh.addShard('192.168.1.202:27018')
第五步设置分片规则
sh.enableShard('shop') //shop启动分片
sh.shardCollection('shop.grades','grade_id') //grade_id 片键 (表的主键)
db.settings.save({_id:'chunksize'},{$set:{value:1}}); //设置每一个chunk的大小,(每一片上的数据分了很多个chunk)
第六步手动预先分片(如果不走分片,chunk会来回移动形成很大的io流)
sh.splitAt('db.collection',{grade_id(片键):1000}) //db下的一个表,在碰到1000的时候进行分片
到这里分片就完成了