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,如需转载请自行联系原作者
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

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