暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MongoDB(五)高可用方案

丁锅笔记 2018-06-18
816
  • Mongodb 的三种集群方式的搭建:Master-Slaver/Replica Set / Sharding


三种集群搭建方式首选 Replica Set,只有真的是大数据,Sharding 才能显现威力,毕竟备节点同步数据是需要时间的。Sharding 可以将多片数据集中到路由节点上进行一些对比,然后将数据返回给客户端,但是效率还是比较低

一、主从 (单机-搭建伪分布式)

这个是最简答的集群搭建,不过准确说也不能算是集群,只能说是主备。并且官方已经不推荐这种方式,所以在这里只是简单的介绍下吧,搭建方式也相对简单。
注意:从机不能读也不能写。从机若要可以读数据,可以在连接从机上输入修改:rs.slaveOk(); 

  • 主从新建文件目录

  • 修改主从的mongodb.conf的配置文件,如:

    主机修改或添加:

  • master=true
    source=192.168.254.135:27008
    从机修改或添加:
    slave=true
    source=192.168.254.135:27009

  • 启动,如下图:



  • 验证(主机造数据,从机查看):

二、副本集

  • 主、从、仲裁节点添加安装文件

  • master节点(192.168.254.135)
    配置mongodb.conf文件,添加副本集: replSet=shard001

  • slave节点(192.168.254.134)
    配置mongodb.conf文件,添加副本集: replSet=shard001

  • arbiter节点(192.168.254.132)
    配置mongodb.conf文件,添加副本集: replSet=shard001

  • 配置主、备、仲裁节点
    >mongo 192.168.254.135:27017 #ip 和 port 是某个节点的地址
    >use admin
    >cfg={_id:"shard001",members:[{_id:0,host:'192.168.254.135:27017',priority:9},{_id:1,host:'192.168.254.134:27017',priority:1},{_id:2,host:'192.168.254.132:27017',arbiterOnly:true}]};
    >rs.initiate(cfg) #使配置生效

  • 检测是否成功


    >如上图,输入下面命令即可看到主从仲裁各节点。
    >mongo 192.168.254.135:27017
    >rs.status();
    可以通过在主节点添加数据,在从机上查看,如图

三、Sharding

    基本概念:RouteServer(路由服务器)、ConfigServer(配置服务器)、Replica Set(副本集)、Shard(切片)、Chunk(分块)

    基于上面的副本集的环境,再搭建一个单机的伪分布式环境,从而构建两个如上图所示的两个副本集。


    • 添加新的副本集,新建文件目录,并添加修改配置文件mongodb.cfg


    • >mongodb.cfg配置文件大同,如下:
      dbpath=/opt/mongodb/shard/replset/replica1/data
      logpath=/opt/mongodb/shard/replset/replica1/logs/mongodb.log
      logappend=true
      fork=true
      bind_ip=192.168.254.135(根据环境而定)
      port=27001(修改端口)
      replSet=shard002(不能和已有的副本集名称重复)
      shardsvr=true
      >mongo 192.168.254.135 :27001连接节点
      >cfg=cfg={_id:"shard002",members:[{_id:0,host:'192.168.254.135:27001'},{_id:1,host:'192.168.254.135:27002'},{_id:2,host:'192.168.254.135:27003'}]};
      >rs.initiate(cfg) 

    • 配置 configsvr

      新建文件目录,并修改配置文件mongodb.cfg


      >mongodb.cfg配置文件大同,如下:
      dbpath=/opt/mongodb/shard/configsvr/config3/data
      configsvr=true
      port=28003
      fork=true
      logpath=/opt/mongodb/shard/configsvr/config3/logs/mongodb.log
      replSet=configrs
      logappend=true
      bind_ip=192.168.254.135
      >mongo 192.168.254.135 :28001 连接节点.
      >cfg={_id:"configrs",members:[{_id:0,host:'192.168.254.135:28001'},{_id:1,host:'192.168.254.135:28002'},{_id:2,host:'192.168.254.135:28003'}]};
      >rs.initiate(cfg) 

    • 配置路由节点

      >新建文件目录,如:mkdir -p /opt/mongodb/shard/routesvr/logs

      >修改配置文件mongodb.cfg
      configdb=configrs/192.168.254.135:28001,192.168.254.135:28002,192.168.254.135:28003
      port=30000
      fork=true
      logpath=/opt/mongodb/shard/routesvr/logs/mongodb.log
      logappend=true
      bind_ip=192.168.254.135

      >启动路由节点:mongos -f /opt/mongodb/shard/routesvr/mongodb.cfg 

    • 配置Sharding


    • 操作如下命令,如上图运行结果。分片到不同的副本集中。取值范围如图所示
      >mongos 192.168.254.135:30000
      >sh.addShard("shard002/192.168.209.128:27001");
      >sh.addShard("shard001/192.168.209.128:27017");#shard001、shard002 表示 replica set 的名字 当把主节点添加到 shard 以后,会自动找到 set里的主,备,决策节点
      >use testdb
      >sh.enableSharding("testdb")
      >sh.shardCollection("testdb.testdb",{"name":"hashed"}});#切开
      >for(var i=0;i<100;i++)db.testdb.insert({name:"testdb",age:i});#插入数据,分片到不同的副本集。如上图所示。

    • ReplicaSet(副本集)、shard(切片)和chunk(分块)的区别


文章转载自丁锅笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论