部署MongoDB分片群集

  • MongoDB分片
    在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求。
    当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。
  • 分片的优势
    分片为应对高吞吐量与大数据量提供了方法。
    使用分片减少了每个分片需要处理的请求数,因此,通过水平扩展,集群可以提高自己的存储容量和吞吐量。举例来说,当插入一条数据时,应用只需要访问存储这条数据的分片.
    使用分片减少了每个分片存储的数据。
  • 分片的优势在于提供类似线性增长的架构,提高数据可用性,提高大型数据库查询服务器的性能,当MongoDB的单点数据库服务器存储成为瓶颈,单点数据库服务器的性能成为瓶颈或者需要部署大型应用以充分利用内存时,可以使用分片技术。

    • MongoDB分片群集的组成:
    • Shard:分片服务器,用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担,防止主机单点故障
    • Config Server:配置服务器,mongod实例,存储了整个 ClusterMetadata,其中包括 chunk信息。
    • Query Routers:前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。
    • 部署MongoDB分片群集
    • 安装mongodb3.2
    • 创建多实例的数据目录和日志文件
    • 修改ulimit -n 和ulimit -u 的值为25000
      # yum install openssl-devel -y
      # tar zxvf mongodb-linux-x86_64-3.2.1.tgz -C /opt/
      # mv mongodb-linux-x86_64-3.2.1/ /usr/local/mongodb
      # mkdir -p /data/mongodb/mongodb{1,2,3,4}
      # mkdir /data/mongodb/logs
      # touch /data/mongodb/logs/mongodb{1,2,3,4}.log
      # chmod -R 777 /data/mongodb/logs/*.log
      # ulimit -n 25000
      # ulimit -u 25000

    配置服务器

    # cd /usr/local/mongodb/bin/
    # vim mongodb1.conf
        port=37017
        dbpath=/data/mongodb/mongodb1
        logpath=/data/mongodb/logs/mongodb1.log
        logappend=true
        fork=true
        maxConns=5000
        storageEngine=mmapv1
        configsvr=true
    • 优化:某节点内存不足时,从其他节点分配内存

      # sysctl -w vm.zone_reclaim_mode=0
      # echo never > /sys/kernel/mm/transparent_hugepage/enabled
      # echo never > /sys/kernel/mm/transparent_hugepage/defrag
      
      # ln -s /usr/local/mongodb/bin/mongo /usr/bin/mongo
      # ln -s /usr/local/mongodb/bin/mongod /usr/bin/mongod
    • 启动登录第一个实例确认无误
      # mongod -f /usr/local/mongodb/bin/mongodb1.conf
      # mongo --port 37017
    • 分片服务器
      # cp -p mongodb1.conf mongodb2.conf
      # vim mongodb2.conf
          port=47017
          dbpath=/data/mongodb/mongodb2
          logpath=/data/mongodb/logs/mongodb2.log
          logappend=true
          fork=true
          maxConns=5000
          storageEngine=mmapv1
          shardsvr=true
      
      # cp -p mongodb1.conf mongodb3.conf
      # vim mongodb3.conf
          port=47018
          dbpath=/data/mongodb/mongodb3
          logpath=/data/mongodb/logs/mongodb3.log
          logappend=true
          fork=true
          maxConns=5000
          storageEngine=mmapv1
          shardsvr=true
      
      # mongod -f mongodb2.conf
      # mongod -f mongodb3.conf
      # mongo --port 47017
      # mongo --port 47018
      # ./mongos --help   //查看参数选项
    • 启动路由服务器
    • --port指定对方连接入口27017
    • --fork后台运行
    • --logpath指定日志文件存储路径
    • --configdb指定给谁处理
      # ./mongos --port 27017 --fork --logpath=/usr/local/mongodb/bin/route.log --configdb 192.168.86.129:37017 --chunkSize 1

    • 启用分片服务器
      > mongo
      > mongos> show dbs
      > mongos> sh.status()    #shards下为空,没有分片服务器
      > mongos> sh.addShard("192.168.86.129 :47017")    //添加分片服务器
      > mongos> sh.addShard("192.168.86.129 :47018")
      > mongos> sh.status()       // 查看数据库分片信息

    • 分片功能管理

      > use kgc
      > for(var i=1;i<=10000;i++) db.users.insert({"id":i,"name":"tom"+i})
      mongos> show dbs
      mongos> use kgc
      mongos> show collections    //查看集合
      mongos> db.users.find().limit(5)
      mongos> sh.status()          //查看数据库分片信息


    ?
    ?

    • 启用数据库分片

      mongos> sh.enableSharding("kgc")   //启用数据库分片
      mongos> sh.status()     //再查看数据库分片信息

    • 此时数据库分片开启了,但是你的集合没有开发分片
    • 下面要开启集合的分片
    • 先对users集合创建索引
    • 然后对集合的索引进行分片
      mongos> use kgc
      mongos> db.users.createIndex({"id":1})       //对users表创建索引
      mongos> sh.shardCollection("kgc.users",{"id":1})    //表分片
      mongos> sh.status()


    原文地址:http://blog.51cto.com/13630803/2145976

    时间: 2024-10-01 07:37:39

    部署MongoDB分片群集的相关文章

    部署MongoDB分片群集及分片管理

    MongoDB分片 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求. 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量.这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据. 分片的优势 分片为应对高吞吐量与大数据量提供了方法. 使用分片减少了每个分片需要处理的请求数,因此,通过水平扩展,集群可以提高自己的存储容量和吞吐量.举例来说,当插入一条数据时,应用只需要访问存储这条数据

    在CentOS7上部署MongoDB分片群集

    概述 MongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行操作.分片技术可以满足MongoDB数据量大量增长的需求,当一台MongoDB服务器不足以存储海量数据或不足以提供可接受的读写吞吐量时,我们就可以在多台服务器上分割数据,使得数据库系统能存储和处理更多的数据. MongoDB分片群集的组成 Shard:分片服务器,用于存储实际的数据块,实际生产环境中一个shard server角色可由几台服务器组成一个Replica Set承担,防止主机单点故障. Confi

    MongoDB分片群集(实现分片服务启用、分片服务管理、单点故障模拟)

    MongoDB分片概述 1.什么是分片 高数据量和吞吐量的数据库应用会对单机的性能造成较大压力,大的查询量会将单机的CPU耗尽,大的数据量对单机的存储压力较大,最终会耗尽系统的内存而将压力转移到磁盘IO上. MongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行操作.分片技术可以满足MongoDB数据量大量增长的需求,当一台服务器存储量不够时,可以通过再外接一台分片服务器,使得数据库系统能够存储更多的数据 2.MongoDB分片优势 使用分片减少了每个分片需要处理的请

    MongoDB分片群集

    一.关于分片 1.什么是分片 高数据量和吞吐量的数据库应用会对单机的性能造成较大压力,大的查询会将单机的CPU耗尽,大的数据量对单机的存储压力比较大,最终会耗尽系统的内存而将压力转移到磁盘IO上.MongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行操作.分片技术可以满足MongoDB数据量大量增长的需求,当一台MongoDB服务器不足以存储海量数据或不足以提供可接受的读写吞吐量时,我们就可以通过在多台服务器上分割数据,使得数据库系统能存储和处理更多的数据. 2.Mo

    【MangoDB分片】配置mongodb分片群集(sharding cluster)

    配置mongodb分片群集(sharding cluster) Sharding cluster介绍 这是一种可以水平扩展的模式,在数据量很大时特给力,实际大规模应用一般会采用这种架构去构建monodb系统. 要构建一个 MongoDB Sharding Cluster,需要三种角色: Shard Server: mongod 实例,用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个relica set承担,防止主机单点故障 Config Server: m

    [原创]在Docker上部署mongodb分片副本集群。

    一.安装docker. 请参考:http://www.cnblogs.com/hehexiaoxia/p/6150584.html 二.编写dockerfile. #在根目录下创建dockerfile. $ vi dockerfile #version 1.0 from ubuntu #maintainer maintainer hdx #install run apt-get clean run apt-get update run apt-get install -y vim run apt

    MySQL Cluster 与 MongoDB 复制群集分片设计及原理

    分布式数据库计算涉及到分布式事务.数据分布.数据收敛计算等等要求 分布式数据库能实现高安全.高性能.高可用等特征,当然也带来了高成本(固定成本及运营成本),我们通过MongoDB及MySQL Cluster从实现上来分析其中的设计思路,用以抽象我们在设计数据库时,可以引用的部分设计方法,应用于我们的生产系统 首先说说关系及非关系数据库的特征 MySQL的Innodb及Cluster拥有完整的ACID属性 A 原子性 整个事务将作为一个整体,要么完成,要么回滚 C 一致性 事务开始之前和事务结束以

    mongodb分片部署

    Mongodb 分片部署 配置mongodb集群,比如 在3个server上配置 3 shard的Mongodb集群: 架构: 1.每片数据需要3个mongod server,2个为主从数据节点:1个为仲裁节点(arbiter),不存数据. 一共三片,可以做成: 20.220-mongo1: 20001(sh1主),20002(sh2从),20003(sh3仲裁) 20.221-mongo2: 20002(sh2主),20003(sh3从),20001(sh1仲裁) 20.222-mongo3:

    mongodb分片部署和管理

    一.部署分片集群 在3.2版本中,官方建议对所有生产的config server和shard server都使用复制集.其中config server对复制集有如下要求: 1.必须没有仲裁节点 2.必须没有延时节点 3.必须创建索引,即没有节点配置buildIndex为false 我们这里用来测试就搭建复制集了. 新部署一个分片集群包括4步骤: 1.部署config server 2.部署mongos实例 3.部署mongod server 4.将mongod server添加到集群 5.为集群