mongodb3.6 副本集(三)假期第一天——第二篇文章 mongodb 如何做数据备灾

前言

个人理解,副本集一个主要作用就是当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 副本集就介绍到这里,希望对大家有帮助。文中如有不对的地方,欢迎指出。

谢谢。

原文地址:https://www.cnblogs.com/liangxiarong/p/8440750.html

时间: 2024-08-04 15:20:43

mongodb3.6 副本集(三)假期第一天——第二篇文章 mongodb 如何做数据备灾的相关文章

mongodb3.2副本集配置

网上的资料太乱了,等弄好了再看官网才发现官网写的最清晰和简洁 推荐官网的副本集配置:https://docs.mongodb.com/manual/tutorial/deploy-replica-set/ 引述大神一段总结:http://blog.csdn.net/huwei2003/article/details/40453223 从概念上说一下MongoDB副本集和主从复制的区别.其实副本集(Replica Set)是主从复制的高级形式.高级在哪里呢?主动复制实现了数据备份+读扩展,但是ma

mongodb3.X 副本集(集群)添加用户名认证

折腾好几天这个,由于工作问题,时间也比较散,今天终于抽空将其记录下来了,并且本地测试通过了得好了,废话不多说,下面就开始了, 首先需要搭建mongodb的副本集,再次,我的环境如下: centos 6.5 mongodb 3.2.11 mongdb下载地址:https://www.mongodb.com/download-center?jmp=nav#community 在此我们需要配置三个mong单节点,然后将其结合组成副本集, 安装路径/usr/local/mongd 三个mongdb分别占

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

之前有搭建mongodb3.0的副本集,不过当时直接使用的admin数据库,用户也是直接给的root. 链接:http://blog.csdn.net/tuzongxun/article/details/51723259 最近想要把数据移到非admin数据库上,便重新以非admin库创建用户,过程大致和之前的一样,但创建用户的时候还是遇到了一些问题,主要是在用户角色和权限上. 我搭建过程中参考了下边的用户权限相关的博客: http://blog.csdn.net/tuzongxun/articl

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

最近公司对项目安全方面的问题很是重视,进行了多次各种安全漏洞的扫描,于是乎就扫到了mongodb弱口令的问题. 在项目部署初期,因为大家对这个都不是特别重视,大概是因为觉得反正是内网项目吧,所以mongodb数据库的用户名和密码就都是admin. 这次扫到弱口令之后,要求解决这个问题,于是任务便分到了我的头上. 遵循强口令的标准,我把admin改成了由大写字母.小写字母.数字和特殊字符共同组成的密码,但是在更改的过程中却并不像想象的那么顺利,其中遇到的问题我称之为mongodb副本集密码的一些坑

mongodb第二篇文章~关于集群认证的那点事

集群认证简介:上一篇咱们介绍了单实力的认证方式,正好我在搞lepus监控,副本集合需要用户认证 一 验证方式:  1 auth 方式启动=>单点  2 keyFile 方式启动=>集群  请注意 开户keyFile默认开户auth二 创建keyFile文件  1 创建要求     1.内容 base64编码集[a-z A-Z +/]    2.长度 1000bytes    3.权限至少 chmod 600 keyFile  2 创建方式   openssl rand -base64 102

设定错误和异常处理的三个函数(第二篇)

set_error_handler() 解释:设置用户自定义的错误处理函数,如果使用该函数,会绕过php错误处理程序,同时如果必要,用户定义错误程序通过die()终止脚本,如果错误发生在脚本执行前(比如文件上传)将不会调用自定义的错误处理函数 ,因为它尚未在那时注册 案例: <?php //用户定义的错误处理函数 function myerror($errno,$errstr,$errfile,$errline){ echo "<b>error:</b>[$errn

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

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

搭建高可用mongodb集群(三)—— 深入副本集内部机制

http://www.lanceyan.com/tech/mongodb_repset2.html 在上一篇文章<搭建高可用mongodb集群(二)—— 副本集> 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制.还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的?能否手动干涉下架某一台主节点. 官方说副本集数量最好是奇数,为什么? mongodb副本集是如何同步的?如果同步不及时会出现什么情况?会不会出现不一致性? mongodb的故障转移会不会无故自动发生?什么条件会

MongoDB副本集配置系列三:副本集的认证方式

1:副本集配置参考这篇博客: http://www.cnblogs.com/xiaoit/p/4478951.html 2:副本集的认证 假设有两台机器已经配置好了副本集(副本集罪一般最少3台机器,这里只做演示使用) 192.168.91.132 192.168.91.133 副本集总体思路是用户名.密码和keyfile文件,keyfile需要各个副本集服务启动时加载而且要是同一文件,然后在操作库是需要用户名.密码KeyFile文件必须满足条件:(1)至少6个字符,小于1024字节(2)认证时候