首页 > 数据库技术 > 详细

mogodb分片配置

时间:2019-03-20 15:48:00      阅读:142      评论:0      收藏:0      [点我收藏+]

下图展示了在MongoDB中使用分片集群结构分布:

技术分享图片

上图中主要有如下所述三个主要组件:

  • Shard:

    用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担,防止主机单点故障

  • Config Server:

    mongod实例,存储了整个 ClusterMetadata,其中包括 chunk信息。

  • Query Routers:

    前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

1、启动mongodb

mkdir -p /home/m17 /home/m18 /home/m20 /home/mlog
#启动s1
mongod --dbpath /home/m17 --logpath /home/mlog/m17.log --fork --port 2017 --smallfiles
#启动s2
mongod --dbpath /home/m18 --logpath /home/mlog/m18.log --fork --port 2018 --smallfiles
#启动configsvr
mongod --dbpath /home/m20 --logpath /home/mlog/m20.log --fork --port 2020 --configsvr
#启动mogos
mongos --logpath /home/mlog/m30.log --port 30000 --configdb 192.168.1.1:27020 --fork

 

2、配置分片节点

mongo --port 30000

mongos>sh.addShard(‘192.168.1.1:27017‘);
mongos>sh.addShard(‘192.168.1.1:27018‘);

#查看
mongos>sh.status();

 

3、设定分片规则

#为shop库进行分片
mongos>sh.enableSharding(shop);
#可查看
mongos>sh.status();
#goods表分配片键
mongos>sh.shardCollection(shop.goods,{goods_id:1});
#可查看
mongos>sh.status();
#查看chunk size
mongos>use config
mongos>db.settings.fihnd();
#修改chunk size
mongos>db.settings.save({_id:chunksize,value:1});

#缺点:会造成块的移动,下面介绍手动预先分片

 

4、手动预先分片规则

mongos>sh.shardCollection(shop.user,{userid:1});
mongos>sh.status();
#预先分40块,每1000条数据一块
mongos>for(var i=1;i<=40;i++){ sh.splitAt(shop.user,{userid:i*1000});}

 

mogodb分片配置

原文:https://www.cnblogs.com/nr-zhang/p/10565199.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!