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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • eclipse快捷键

    eclipse快捷键

    2021年9月2日
    172
  • 中国90后福布斯排行榜前30_2019中国90后十大富豪榜

    中国90后福布斯排行榜前30_2019中国90后十大富豪榜作者|佩奇出品|区块链大本营(blockchain_camp)近日,福布斯发布“Forbes30Under30Asia2019”金融和风险投资类榜单…

    2022年9月30日
    3
  • HDU 2227 Find the nondecreasing subsequences(DP)

    HDU 2227 Find the nondecreasing subsequences(DP)

    2022年1月10日
    42
  • VBS代码–很恶心的整人效果

    VBS代码–很恶心的整人效果—-我们会经常遇到一些无聊的文件,一旦我们打开它就会出现各种烦人的新窗口,今天来看的是VBS脚本—-一:VBS简介VBS是基于VisualBasic的脚本语言。VBS的全称是:MicrosoftVisualBasicScriptEditon。(微软公司可视化BASIC脚本版)。其语言类似VisualBasic(VB),VBS是微软的WSH脚本的一种,WSH是是Win

    2022年4月28日
    68
  • yum源仓库搭建

    yum源仓库搭建安装 createrepo 命令 sudoyuminsta 方法一 本地 yum 源 file 放置需要被 yuminstall 的软件包 比如 var localfile 创建仓库目录 sudocreatere var localfile 在 etc yum repos d 路径下创建 localfile repo 名字任意 sudo

    2025年8月6日
    4
  • cas认证 php,使用php处理cas认证[通俗易懂]

    cas认证 php,使用php处理cas认证[通俗易懂]最近项目要嵌入到平台上做一个应用,数据对接用ms-security(见上篇博客),登录则使用cas认证,今天就把完整代码放进来,也是走了好些个弯路的。代码的主要逻辑就是,当用户访问应用时,应用检测是否已登录,未登录则带上本地url跳转到cas登录中心,用户输入用户名、密码后,正确的话便带上ticket跳转到一开始带上的url(通常是该应用的登录接口),检测到ticket后便使用file_get_c…

    2022年6月29日
    41

发表回复

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

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