前言

个人理解,副本集一个主要作用就是当Master库出现故障,其中的一个salve从库会被选举出来成为新的Master。框架图如下:

其中,选举者是不参与数据存储的,它的作用只是为了选举出新的Master。当原Master恢复后,他也只会以从库salve身份加入到副本集中。

当然,我们也可以在恢复启动它的时候手动配置priority参数,让他成为Master。

Demo

下面通过具体的例子说明。

首先在mongo目录下建立3个(一个作为master,一个作为从库,一个作为选举者,在实际项目中,这三个服务最后放在不同的服务器上)配置文件,文件内容如下:

Master

#配置mongodb数据的存储路径
dbpath=D:\mongodb\data\rs1
#配置mongodb日志文件
logpath=D:\mongodb\log\rs1.log
#配置端口,若不配置,默认27017端口
port=40001
#副本集名字,每个配置文件中需保持一致
replSet=rs_test

Salve

#配置mongodb数据的存储路径
dbpath=D:\mongodb\data\rs2
#配置mongodb日志文件
logpath=D:\mongodb\log\rs2.log
#配置端口,若不配置,默认27017端口
port=40002
#副本集名字,每个配置文件中需保持一致
replSet=rs_test

选举者配置文件

#配置mongodb数据的存储路径
dbpath=D:\mongodb\data\rs3
#配置mongodb日志文件
logpath=D:\mongodb\log\rs3.log
#配置端口,若不配置,默认27017端口
port=40003
#副本集名字,每个配置文件中需保持一致
replSet=rs_test

启动三个mongodb实例

首先,在bin 目录下打开三个shell窗口,分别启动上面配置的三个mongodb,如下命令:

mongod -f d:\mongodb\rs1.conf

若是都启动成功,我们将会在日志文件中看到主要的信息:

waiting for connections on port 40003

其次,连接配置在40001端口的mongodb实例:

mongo -port 40001

初始化40001 为master:

rs.initiate()

初始化成功,使用命令rs.status() 查看副本集状态,将会看到如下图:

从图中可以看到40001已经作为primary 启动。

再次,执行命令 rs.add("127.0.0.1:40002")  添加从库。

添加选举者:rs.addArb("127.0.0.1:40003")

再次执行 rs.status() 查看副本集的状态,将会看到如下图:

验证 选举

关闭40001 服务端窗口(故障停机),在40002窗口执行 rs.status(),将会看到如下图:

最后,再次启用40001 服务端,在bin 下 执行  mongod -f d:\mongodb\rs1.conf

然后 再次查看状态 rs.status() ,可以看到40001已经重新加入到副本集并且是作为从库加入的,如下图:

关于mongodb 副本集就介绍到这里,希望对大家有帮助。文中如有不对的地方,欢迎指出。

谢谢。

mongodb3.6 副本集(三)mongodb 如何做数据备灾的更多相关文章

  1. mongodb3.2副本集配置

    网上的资料太乱了,等弄好了再看官网才发现官网写的最清晰和简洁 推荐官网的副本集配置:https://docs.mongodb.com/manual/tutorial/deploy-replica-se ...

  2. 修改mongodb3.0副本集用户密码遇到的坑

    最近公司对项目安全方面的问题很是重视,进行了多次各种安全漏洞的扫描,于是乎就扫到了mongodb弱口令的问题. 在项目部署初期,因为大家对这个都不是特别重视,大概是因为觉得反正是内网项目吧,所以mon ...

  3. mongodb3.0副本集搭建补充~~非admin数据库的用户权限

    之前有搭建mongodb3.0的副本集,不过当时直接使用的admin数据库,用户也是直接给的root. 链接:http://blog.csdn.net/tuzongxun/article/detail ...

  4. 创建mongodb副本集操作实例

    一:概念 相关概念及图片引用自这里 mongodb副本集: 副本集是一组服务器,其中一个是主服务器,用于处理客户请求:还有多个备份服务器,用于保存主服务器的数据副本.如果主服务器崩溃了,备份服务器自动 ...

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

    mongodb是最常用的nodql数据库,在数据库排名中已经上升到了前六.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...

  6. Mongodb主从复制/ 副本集/分片集群介绍

    前面的文章介绍了Mongodb的安装使用,在 MongoDB 中,有两种数据冗余方式,一种 是 Master-Slave 模式(主从复制),一种是 Replica Sets 模式(副本集). Mong ...

  7. Mongodb主从复制 及 副本集+分片集群梳理

    转载努力哥原文,原文连接https://www.cnblogs.com/nulige/p/7613721.html 介绍了Mongodb的安装使用,在 MongoDB 中,有两种数据冗余方式,一种 是 ...

  8. MongoDB 3.4 高可用集群搭建(二)replica set 副本集

    转自:http://www.lanceyan.com/tech/mongodb/mongodb_repset1.html 在上一篇文章<MongoDB 3.4 高可用集群搭建(一):主从模式&g ...

  9. [转]搭建高可用mongodb集群(二)—— 副本集

    在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点 ...

随机推荐

  1. [django]用日期来查询datetime类型字段

    有一个model的字段是 DateTimeField,我现在要具体查询某一天date的数据,应该怎么用orm来查询呢? 指定年月日 YourModel.objects.filter(datetime_ ...

  2. ExpandableListView简单应用及listview模拟ExpandableListView

    首先我们还是来看一些案例,还是拿搜狐新闻客户端,因为我天天上下班没事爱看这个东东,上班又没时间看新闻,上下班路途之余浏览下新闻打发时间嘛.           看这个效果挺棒吧,其实实现起来也不难,我 ...

  3. cocos2d-x 3.0 播放MP4视频

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=545 很久以前写的一个2dx播放 ...

  4. iOS开发之三:常用控件--UILabel的使用

    UILabel 一般用来显示文本内容. 常用的属性如下: @property(nonatomic,copy) NSString *text; // 文本的内容,默认为 nil @property(no ...

  5. Dynamics CRM 给视图配置安全角色

    CRM2011后给表单设置了安全角色,可以配置实体表单给不同的安全角色查看,但视图的权限始终没有开放配置,这里介绍个工具可以实现这种配置. 先奉上2011/2013版本的工具地址(2015/2016见 ...

  6. (四十二)tableView的滑动编辑和刷新 -局部刷新和删除刷新 -待解决问题

    tableView的局部刷新有两个方法: 注意这个方法只能用于模型数据的行数不变,否则会出错. [self.tableView reloadRowsAtIndexPaths:<#(NSArray ...

  7. (四十一)数据持久化的NSCoding实现 -实现普通对象的存取

    NSCoding可以用与存取一般的类对象,需要类成为NSCoding的代理,并且实现编码和解码方法. 假设类Person有name和age两个属性,应该这样设置类: .h文件: #import < ...

  8. C++ Primer 有感(函数)

    1.函数应该在头文件中声明,并在源文件中定义.(定义函数的源文件应包含声明该函数的头文件)将提供函数声明的头文件包含在定义该函数的源文件中,可使编译器能检查该函数的定义和声明是否一致. 2.既可以在函 ...

  9. 【Unity Shaders】Diffuse Shading——向Surface Shader添加properties

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  10. 4种方法让SpringMVC接收多个对象(转:http://blog.csdn.net/lutinghuan/article/details/46820023)

    问题背景: 我要在一个表单里同时一次性提交多名乘客的个人信息到SpringMVC,前端HTML和SpringMVC Controller里该如何处理? 第1种方法:表单提交,以字段数组接收: 第2种方 ...