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)
上一篇 2022年3月12日 上午9:00
下一篇 2022年3月12日 上午9:35


相关推荐

  • 二进制与十进制的相互转换

    二进制与十进制的相互转换博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导):二进制如何转十进制,十进制如何转二进制十进制转二进制转成二进制主要有以下几种:正整数转二进制,负整数转二进制,小数转二进制;1、正整数转成二进制。要点一定一定要记住哈:除二取余,然后倒序排列,高位补零。也就是说,将正的十进制数除以二,得到的商再除以二,依次类推知道商为零或一时为止,然后在旁边标出各步的余数,…

    2022年10月17日
    5
  • 利用ogg实现oracle到kafka的增量数据实时同步

    利用ogg实现oracle到kafka的增量数据实时同步ogg 即 OracleGolden 是 Oracle 的同步工具 本文讲如何配置 ogg 以实现 Oracle 数据库增量数据实时同步到 kafka 中 其中同步消息格式为 json 下面是我的源端和目标端的一些配置信息 可在这里或旧版本查询下载注意 源端和目标端的文件不一样 目标端需要下载 OracleGolden

    2026年3月26日
    2
  • ThinkPHP3.2版本安全更新

    ThinkPHP3.2版本安全更新

    2021年10月18日
    51
  • java 拦截器 判断url_Spring 的拦截器如何实现url转发

    java 拦截器 判断url_Spring 的拦截器如何实现url转发如何实现Spring的过滤器代码中改写请求的URL,并转发出去,注意,是转发,不是重定向packagecom.blog.inteceptor;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.springframework.web.servl…

    2022年8月31日
    8
  • LVS基本配置

    LVS基本配置LVS说明【Linux操作系统核心空间中、一般采用DR构建集群】小结:{Ipvsadm:管理集群服务的命令行工具、Ipvs:内核模块/代码;三种负载均衡模式:【NAT:修改IP、双网卡,RIP指向DIP内网网关、任意操作系统】、【DR直接路由:一个网卡、配置别名、DIP和RIP在同一网关上、修改MAC地址】、【TUP隧道:封装IP报文,异地服务连接】} LVS主要组成部分为:  负

    2022年7月23日
    9
  • javascript常用判断写法

    js验证表单大全,用JS控制表单提交,javascript提交表单目录:1:js字符串长度限制、判断字符长度、js限制输入、限制不能输入、textarea长度限制 2.:js判断汉

    2021年12月24日
    59

发表回复

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

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