整理mongodb文档:副本集二

个人博客

整理mongodb文档:副本集二

个人博客,求推荐,本片内容较为乱

文章概叙

本文章主要讲在MongoDB的副本集中的一些注意点,主要是如何对seconadry进行数据操作,以及对更新数据的一些介绍

查看当前节点

上一集讲了关于搭建一个副本集的,接着延续上级的操作,分别使用

javascript 复制代码
.\mongosh mongodb://localhost:27017
javascript 复制代码
.\mongosh mongodb://localhost:27018

来链接我们的Primary以及Secondary两个节点,当前情况下,27018为我们的Primary,而27017为Secondary

也可以直接使用rs.isMaster指令查看当前的节点是否为Primary

Secondary 设置允许访问

前面提及到了,在我们副本集的Secondary中,是无法做读写操作的,当我们操作的时候,会显示出下面的错误,而slaveok可以让我们操作MongoDB的Secondary。

而在4.2之后的mongdob中,我们需要使用rs.secondaryOk设置Secondary允许访问,而4.2之前则是使用slaveOk(),详情请看下方的截图

其中,提示提及到了read preference的,在关于读写分离介绍的时候再描述一次

接着,在Secondary中查询

javascript 复制代码
db.collection27017.find()

显示的结果如下图所示,我们完成了在Secondary中实现读写的操作

oplog库与Secondary的数据更新

按照我们的经验,副本集中Secondary的数据更新是根据local库中的oplog进行更新的,部分小伙伴会觉得我们再非副本集下的数据会在设置为副本集的时候同步上去,因此下方的代码就验证非副本集下的db会不会被同步。

上一次,我们在副本集的加持下,让两个Secondary能完美的拷贝到Primary的数据,现在解散我们的副本集,也就是分别启动两个服务并且使他们没有任何的关联,且在其中的一个库中加入一条数据,即

此时,再打开副本集,看看是否会将那条数据同步过去,且需要注意将27018设置为Primary(先启动27018,则27018会被设置为副本集的Primary)

很遗憾,并不会同步过去,而此时我们再往Primary中加入一条新的数据。

此时的Primary中添加的新数据,成功被拷贝到Secondary,因此我们可以得出结论。当一个副本集更新数据的时候,只会更新那些在副本集状态下的sql。

而oplog的信息,存放在local下的oplog中。

也可以使用如下的指令敲出来,当然需要先到local库中。

javascript 复制代码
use local
db.oplog.rs.find()

初始化已有数据的库

上述场景中,我们模拟了一个当副本集断开时,往其中一个库插入数据,是否在副本集选举之后会将数据拷贝的情况,很遗憾并没有将数据更新到Secondary中,而接下来的场景,会测试在搭建副本集前,如果Primary库已经有数据的情况下,是否会将Primary库中的数据复制到Secondary中去。

首先,启动一个端口为27020的MongoDB服务,接着创建了一个测试的库,并且塞入一条数据。

接着,按照之前的操作顺序,创建一个副本集,并且设置27020为Primary,接着进入Primary看下设置副本集时,会不会清空MongoDB的服务,可以看到数据还在。

接着,再登陆Secondary看看是否会将数据复制过去。

可以看到,在设置副本集之前的数据,在 Primary中是可以保存的。

而当Primary为 空,但Secondary又有数据的时候,初始化我们的副本集,会将Secondary清空还是保留数据呢?这点建议大家自己试试,加深理解。

注意点

rs.slaveOk已经是退出舞台的了,基本在新版本中不会使用到,需要注意下用secondaryOk代替。

一般来说,在Secondary实现读写,都是违背祖宗的规定,万不得已,千万不能违背老一辈呀,除非老板开口

相关推荐
这个DBA有点耶16 小时前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G16 小时前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备17 小时前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远17 小时前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
2601_9622186118 小时前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
张洛闻Eren19 小时前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安19 小时前
MySQL-触发器
数据库·mysql
白远山19 小时前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析
Omics Pro19 小时前
斯坦福Nature+Science|广义虚拟细胞基础大模型
数据库·人工智能·算法·机器学习·自然语言处理
2603_9651481120 小时前
AI+API选品:下一代智能商务助手雏形已现
java·大数据·数据库·人工智能·数据挖掘