整理mongodb文档:副本集二

个人博客

整理mongodb文档:副本集二

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

文章概叙

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

查看当前节点

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

.\mongosh mongodb://localhost:27017
.\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中查询

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库中。

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实现读写,都是违背祖宗的规定,万不得已,千万不能违背老一辈呀,除非老板开口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/145576.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器人制作开源方案 | 四轴飞行器

1. 概述 基于探索者搭建的模块化四轴飞行器研究平台,采用独特的设计方式,可实现在室内完成对四轴飞行器、无人机等运动控制的原理研究,以及学习飞行控制的原理知识。 2. 组装 请按照下图进行机架的组装。 整体图 请解压文末资料中的 /软件/Mi…

智能文字识别技术——AI赋能古彝文保护

前言 人工智能在古彝文古籍保护方面具有巨大的潜力和意义。通过数字化、自动化和智能化的手段,可以更好地保护和传承古彝文的文化遗产,促进彝族文化的传承和发展。 文章目录 前言一、古彝文是什么?1.1古彝文的背景1.2古彝文古籍保护背景 二、…

福利!这两款我自制的免费配色工具你领到了吗?

​前两天刚入职,还没干过啥活儿,就迎来了中秋3天国庆7天总共8天的假期,美滋滋。 在这么喜庆的日子里,我觉得大家应该也无心科研,所以不如给大家发点儿福利,继续乐呵乐呵。 当然,说是福利&…

【聊天系统的优化】RPC方式的优化

RPC方式的优化 聊天系统的中RPC的选择Jsonprotobufmsgpack 聊天系统的中RPC的选择 在RPC方式中,常用的三种方式:Json,protobuf,Msgback 设定一个简单的加和服务,客户端发送一个list给服务端,需要将list的…

API接口数据流转常见安全机制

01 什么是API? 百度百科给出了API的定义: API(应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需…

C++ 类构造函数 析构函数

类的构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。 下面的实例有助于更好地…

Vue以及整合ElementUI

初始化vue项目 #vue 脚手架使用 webpack 模板初始化一个 appname 项目 vue init webpack appname启动 vue 项目 #项目的 package.json 中有 scripts,代表我们能运行的命令 npm start npm run dev #启动项目 npm run build:将项目打包项目结构 运行流程…

el-menu 导航栏学习(1)

最简单的导航栏学习跳转实例效果: (1)index.js路由配置: import Vue from vue import Router from vue-router import NavMenuDemo from /components/NavMenuDemo import test1 from /components/test1 import test2 from /c…

Firefox 开发团队对 Vue 3 进行优化效果显著

Mozilla 官方博客近日发表文章《Faster Vue.js Execution in Firefox》,介绍了 Firefox 开发团队对 Vue 3 进行的优化。 文章写道,在使用 Speedometer 3 对 Firefox 进行基准测试时,他们发现 Vue.js test 的测试结果从 Vue 2 升级到 Vue 3 后…

MySQL单表查询与多表查询

目录 一、单表查询 ​编辑 1、显示所有职工的基本信息。 ​编辑2、查询所有职工所属部门的部门号,不显示重复的部门号。 ​编辑3、求出所有职工的人数。 4、列出最高工和最低工资。 ​编辑5、列出职工的平均工资和总工资。 ​编辑6、创建一个只有职…

【数据结构】队列实现+层序遍历详解+一些练题

欢迎来到我的:世界 希望作者的文章对你有所帮助,有不足的地方还请指正,大家一起学习交流 ! 目录 前言队列的实现层序遍历详解强化练习1.判断是不是完全二叉树求二叉树的最大深度 总结 前言 国庆到了,也要内卷一下,感…

ElasticSearch 同步数据变少了

一、前言 这几天对接ES遇到几个坑,我们将一张库存表同步到ES发现Docs Count和我们表中的数据对不上,需要加上Docs deleted才对得上,也不知道批量写入数据为什么有些数据就会成 Docs deleted。 二、ID和版本号 ES中每一个Document都有一个_…

c#中的接口

使用IEnumerable统一迭代变量类型 class Program {static void Main(string[] args){int[] nums1 new int[] { 1, 2, 3, 4, 5 };ArrayList nums2 new ArrayList { 1, 2, 3, 4, 5 };Console.WriteLine(Sum(nums1));Console.WriteLine(Sum(nums2));Console.WriteLine(Avg(nums…

oracle-使用PLSQL工具自行修改用户密码

1、使用PLSQL工具,输入用户名和原密码登录,如下图 2、登录后,在会话下拉菜单中找到”Change password..” 3、在跳出的窗口中配置新密码,修改完成后单击”确认”,后退出PLSQL 4、重新打开PLSQL,使用新密码登…

【Spring Cloud】深入理解 Eureka 注册中心的原理、服务的注册与发现

文章目录 前言一、微服务调用出现的问题1.1 服务消费者如何获取服务提供者的地址信息?1.2 如果有多个服务提供者,消费者该如何选择?1.3 消费者如何得知服务提供者的健康状态? 二、什么是 Eureka2.1 Eureka 的核心概念2.2 Eureka 的…

C语言数据结构之排序整合与比较(冒泡,选择,插入,希尔,堆排序,快排及改良,归并排序,计数排序)

前言:排序作为数据结构中的一个重要模块,重要性不言而寓,我们的讲法为下理论掌握大致的算法结构,再上代码及代码讲解,助你一臂之力。 一,冒泡 冒泡排序应该是大家学习以来第一个认识的排序方法&#xff0…

buuctf-[WUSTCTF2020]CV Maker

打开环境 随便登录注册一下 进入到了profile.php 其他没有什么页面&#xff0c;只能更换头像上传文件&#xff0c;所以猜测是文件上传漏洞 上传一句话木马看看 <?php eval($_POST[a]);?>回显 搜索一下 添加文件头GIF89a。上传php文件 查看页面源代码&#xff0c;看…

Leetcode---364场周赛

题目列表 2864. 最大二进制奇数 2865. 美丽塔 I 2866. 美丽塔 II 2867. 统计树中的合法路径数目 一、最大二进制奇数 这题只要你对二进制有了解(学编程的不会不了解二进制吧)&#xff0c;应该问题不大&#xff0c;这题要求最大奇数&#xff0c;1.奇数&#xff1a;只要保证…

谷歌扩展下载

Chrome 扩展下载安装网站推荐 # 1. 极简插件优质crx应用 ●地址&#xff1a;https://chrome.zzzmh.cn ●推荐&#xff1a;★★★★★ 一个非常良心 & 干净 & 简洁的 Chrome 扩展下载网站&#xff0c;体验非常不错&#xff01; 侧边栏可以通过类型对扩展进行筛选和排序&…

Android LiveData 介绍

Android LiveData 介绍 系列文章目录前言一、LiveData是什么&#xff1f;二、简单使用依赖测试数据准备1.创建可观察的livedata2.观察它3.更新它 总结 系列文章目录 Android LiveData 介绍&#xff08;本文&#xff09; 前言 本系列根据官网介绍Jetpack中的数据通信组件&…