Mongo DB 的集群搭建

Mongo DB 提供了集群以及分片策略,这样满足了我们大部分的场景要求。

集群搭建

先说下集群的构架, 可以从下图看到,每个APP 都是把数据写到Primary 中, 然后Primary在把数据复制给secondary中。从图中我们可以看到,只有Primary才有读写的权利,secondary 只拥有备份的权利。

那么如果万一Primary unavailable了呢? 毕竟我们需要的是高可用的场景,那么每个节点都有heartbeat,这样就可以选举出来新的Primary。不过即使原来的主节点复活,也不会重新变为子节点。

Selection 选举

那么他们之间是如何是选举的?难道像Zookeeper 或者 Redis 一样, 用着Paxons 算法吗?  当然不是啦,他有自己的算法。

在每一个复制节点启动的时候 节点会有两个信息,一个是Votes , 一个是 Priority.

每个成员的投票数是1或者0 , 而仲裁者总是有一票。  并且如果一个节点的Priority 大于0 , 则他的投票数必须大于0。

并且可以最多有50个复制节点,但是最多只能有7个投票节点。

Arbiter 仲裁点

然后我们还可以添加一个仲裁节点。 仲裁节点除了投票权限意外,没有任何的作用。他会根据Secondary 的Priority 的大小进行投票。

好了,那么我们开始我们的构建之旅。

构建集群

首先,我要有4个节点,一个Primary节点,两个secondary节点,一个仲裁节点。

主节点dbpath=/data/mongodb/master
port=27017
fork=true
logpath=/data/mongodb/master/master.log
replSet=mythCluster

从节点1
dbpath=/data/mongodb/slave1
port=27018
fork=true
logpath=/data/mongodb/slave1/slave1.log
replSet=mythCluster
从节点2
dbpath=/data/mongodb/slave2
port=27019
fork=true
logpath=/data/mongodb/slave2/slave2.log
replSet=mythCluster

arbiter 节点
dbpath=/data/mongodb/arbiter
port=27020
fork=true
logpath=/data/mongodb/arbiter/arbiter.logreplSet=mythCluster

我们先启动前3个节点。

这时候我们可以看到启动了3台节点。

1)加载配置文件

var cfg ={"_id":"mythCluster",
          "protocolVersion" : 1,
          "members":[
                {"_id":0,"host":"127.0.0.1:27017","priority":10},
                {"_id":1,"host":"127.0.0.1:27018","priority":2},
                {"_id":2,"host":"127.0.0.1:27019","priority":0}
            ]
         }

2)初始化配置 并且查询集群状态

rs.initiate(cfg)

rs.status()

可以看到如下标志。 证明集群搭建Okay。

3)同步数据

这个时候我向主节点插入数据,希望在从节点可以看到数据, 但是并没有看到。

看上图的错误,可以发现,是因为不是主节点,并且SlaveOk=false , 所以我们把SlaveOk  打开就好了。

rs.slaveOk()

加入仲裁节点。

1) 插入新的节点

rs.addArb("127.0.0.1:27020")

2)查看配置文件。

rs.config()

可以看到是arbiterOnly。

原文地址:https://www.cnblogs.com/mythdoraemon/p/10301652.html

时间: 2024-10-09 19:30:16

Mongo DB 的集群搭建的相关文章

Mongo分片+副本集集群搭建

一. 概念简单描述 1. MongoDB分片集群包含组件: mongos,configserver,shardding分片 2. Mongos:路由服务是Sharded cluster的访问入口,本身不存储数据(1) 负载处理客户端连接;(2) 负责集群数据的分片 3. Configserver: 配置服务器,存储所有数据库元信息(路由.分片)的配置.mongos本身没有物理存储分片服务器和数据路由信息,只是缓存在内存里,配置服务器则实际存储这些数据.mongos第一次启动或者关掉重启就会从 c

Replica Set副本集方式的mongodb集群搭建

1.环境: 单台服务器上开启四个mongodb实例来实现mongodb的Replica Set副本集方式的集群搭建 2.配置文件: master主实例配置文件: [[email protected] ~]# cat /usr/local/mongodb/mongod.cnf logpath=/data/mongodb-master/logs/mongodb.log logappend = true #fork and run in background fork = true port = 27

MongoDB高可用复制集分片集群搭建

1     逻辑架构 1.1     逻辑架构图 1.2     组件说明 一.mongos(query routers):查询路由,负责client的连接,并把任务分给shards,然后收集结果.一个集群可以有多个query routers(replica sets),以分担客户端请求(负载均衡). 二.config server:配置服务器.保存了集群的元数据(比如数据放在哪个shards上),query router通过config server中的配置信息决定把任务分配到哪个shards

Mongodb集群搭建的三种方式

Mongodb是时下流行的NoSql数据库,它的存储方式是文档式存储,并不是Key-Value形式.关于Mongodb的特点,这里就不多介绍了,大家可以去看看官方说明:http://docs.mongodb.org/manual/ 今天主要来说说Mongodb的三种集群方式的搭建:Replica Set / Sharding / Master-Slaver.这里只说明最简单的集群搭建方式(生产环境),如果有多个节点可以此类推或者查看官方文档.OS是Ubuntu_x64系统,客户端用的是Java客

mongoDB3.4的sharding集群搭建及JavaAPI的简易使用

第一部分 在搭建mongoDB之前,我们要考虑几个小问题: 1.我们搭建集群的目的是什么?是多备份提高容错和系统可用性还是横向拓展存储大规模数据还是两者兼有? 如果是为了多备份那么选择replication集群搭建即可,如果是为了处理大数据则需要搭建sharding集群,如果两者兼有需要对每个shardsvr创建replica. 2.什么是sharding?和replication有什么不同? 简单而言,replica是mongo提供服务的一个基本单位,单机系统和replication集群对用户

mongodb 3.4 集群搭建:分片+副本集

mongodb是最常用的nodql数据库,在数据库排名中已经上升到了前六.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置服务器等. 相关概念 先来看一张图: 从图中可以看到有四个组件:mongos.config server.shard.replica set. mongos,数据库集群请求的入口,所有的请求都通过mongos进行协调,不需要在应用程序添加一个路由选择器,mongos自己就是一个请求分发中心,它负责把

MongoDB集群搭建-副本集

MongoDB集群搭建-副本集 概念性的知识,可以参考本人博客地址: http://www.cnblogs.com/zlp520/p/8088169.html 一.Replica Set方案(副本集或复制集): 1.搭建副本集有两种办法: 其一:在一台服务器上,通过文件的方式及端口号的方式来区分: 其二:找最少三台服务器,每台服务器都通过如下的配置: ip规划每台服务器担任的工作: 192.168.0.100:27017 主机 192.168.0.101:27017 副本集 192.168.0.

mongodb3.6集群搭建:分片+副本集

mongodb是最常用的noSql数据库,在数据库排名中已经上升到了前五.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置服务器等.相关概念mongodb集群架构图: 从图中可以看到有四个组件:mongos.config server.shard.replica set.mongos,数据库集群请求的入口,所有的请求都通过mongos进行协调,不需要在应用程序添加一个路由选择器,mongos自己就是一个请求分发中心,它

MongoDB分片集群搭建及扩容

### 实验:分片集群搭建及扩容#### 实验目标及流程 * 目标:学习如何搭建一个两分片的分片集群 * 环境:3台Linux虚拟机器,4Core 8GB * 步骤: * 配置域名解析 * 准备分片目录 * 创建第一个分片复制集并初始化 * 初始化分片集群,加入第一个分片 * 创建分片表 * 加入第二个分片#### 实验架构 ``` demo1 shard1(Primary|27017) shard2(Primary|27011) Config1(27019) mongos(27017) ```