mongodb分片实战

mongodb分片实战

大家好,又见面了,我是全栈君。

分片技术其实就是一个分布式的过程,但是mongodb的负载和其他的负载有所不同,在整个mongodb分布式的集群中一共有如下角色:

    mongos:mongos就是一个路由服务器,它会根据管理员设置的“片键”将数据分摊到自己管理的mongod集群,负责和客户端直接交互

    config:数据和片的对应关系以及相应的配置信息保存在”config服务器”上

    mongodb:负责存放数据的地方,如果不做分片的话,我们会直接连接mongodb

信息大概如下图所示:

              wKiom1Ph9B3gh67UAAEow0c6rGw678.jpg

端口介绍:

        mongodb1 27017

        mongodb2 27018

        config   27027

        mongos   40000

步骤一

    创建mongodb1和mongodb2的db目录和log目录,并启动mongodb1和mongodb2

       mkdir -p /opt/mongodb/data/s1

    mkdir -p /opt/mongodb/data/s2

    mkdir -p /opt/mongodb/log/

    ./mongod –port 27017 –dbpath /opt/mongodb/data/s1 –fork –logpath /opt/mongodb/log/s1.log

    ./mongod –port 27018 –dbpath /opt/mongodb/data/s2 –fork –logpath /opt/mongodb/log/s2.log

步骤二

    创建Config Server的db目录,启动Config Server

    mkdir -p /opt/mongodb/data/config

    ./mongod –port 27027 –dbpath /opt/mongodb/data/config –fork –logpath /opt/mongodb/log/config.log

步骤三

    启动mongos Server

    ./mongos –port 40000 –configdb localhost:27027 –fork –logpath /opt/mongodb/log/mongos.log

步骤四

    服务配置

   连接mongos服务器,然后将27017,27018的mongod交给mongos,添加分片也就是addshard()

   mongos> db.runCommand({“addshard”:”127.0.0.1:27017″,allowLocal:true})
   mongos> db.runCommand({“addshard”:”127.0.0.1:27018″,allowLocal:true})

   片已经集群了,但是mongos不知道该如何切分数据,在mongodb中设置片键来解决此问题

   mongos> db.runCommand({“enablesharding”:”weisong”})  对xiaoxin库进行分片

   设置键为weisong库里面的user表里面的name字段

   mongos> db.runCommand({“shardcollection”:”weisong.user”,”key”:{“name”:1}}) 

步骤五

    验证

   往数据里面插入1W条数据

   mongos> for(var i=0;i<10000;i++){

           …db.user.insert({“name”:”jack”+i,”age”:i})
           …}

   查看插入结果

   mongos> db.printShardingStatus()

wKioL1Ph_MKgXnQ7AALZoiUbUkw074.jpg

   在返回信息中我们要注意下面四个地方

    ① shards 我们能清楚的看到集群分了2个片分别为27017和27018

    ② databases 我们能清楚的看到我们对weisong库进行了分片

    ③ 我们看到了两个分片的比例为2:1

    ④ 我们会发现在name值被划分了3个区域

          无穷小–>name0、name0–>name999、name999–>无穷大










本文转自 xinsir999 51CTO博客,原文链接:http://blog.51cto.com/xinsir/1536529,如需转载请自行联系原作者
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107895.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 大疆网上测评题库_大疆在线测评 – 逻辑题「建议收藏」

    大疆网上测评题库_大疆在线测评 – 逻辑题「建议收藏」收到大疆测评的邮件,在知乎百度搜了一圈也没搜到题目,只好直接去测评了。我的测评是90道题,其中逻辑题挺烧脑,出现了6道逻辑题,幸好之前看过逻辑学三段论,都能答对。2-7是我测评中出现的题,一模一样,今后是否一样就不能确保了,仅供参考。1.所有的老虎会动;一些动物是老虎;因此,一些动物会动。参考解:True2.所有的宗教狂热分子都偏执;所有偏执的人都是种族主义者;因此,所有的种族主义者都是宗教狂…

    2022年6月29日
    99
  • 什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决。

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:riemann_ blog.csdn.net/riemann_/article/details/8783526…

    2021年6月25日
    80
  • 局域网,园区网,广域网的区别是什么_局域网和互联网的区别与联系

    局域网,园区网,广域网的区别是什么_局域网和互联网的区别与联系局域网局域网LAN(LocalAreaNetwork):一般不大于10公里,而且通常只使用一种传输介质;地域上看局域网通常是用在一座建筑物或一个工厂内,使用上通常是某一单位或某一部门使用,规模上一般不超过几百个用户。(局域网也是相对而言,一栋楼可以看作一个局域网,一个国家性对于世界来说也可以看作一个局域网。多个楼栋,组成的局域网就可以看作一个园区网。)城域网MAN(MetropolitanAreaNetwork):城域网是一种比局域网更大的网,通常覆盖一个城市,从几十公里到100公里不等,可能

    2022年8月31日
    0
  • MongoDB启动失败原因「建议收藏」

    MongoDB启动失败原因「建议收藏」MongoDB启动失败原因今天某个项目突然登录不了,查看服务器发现是后端出现异常,停掉后端重新启动的时候失败,显示是数据库连接失败,然后接着查看数据库,发现数据库连接失败,原因是数据库挂掉了。数据库用的是MongoDB,我也只是听过还没有使用过,简单的在网上查询了一下MongoDB的启动命令就直接开始启动了,结果发现启动失败。尝试了好一些方法后才终于成功启动:尝试提升MongoDB所在文…

    2022年10月30日
    0
  • java–ACMer入门指南

    java–ACMer入门指南

    2021年9月29日
    35
  • idea20212破解激活 重启未生效(已测有效)

    idea20212破解激活 重启未生效(已测有效),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    279

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号