MongoDB 7 分片副本集升级方案详解(下)
#作者:任少近
文章目录
- 1.4 分片升级
- 1.5 升级shard1
- 1.6 升级shard2,shard3
- 1.7 升级mongos
- 1.8重新启用负载均衡器
- 1.9 推荐MongoDB Compass来验证数据
- 2 注意事项:
1.4 分片升级
使用“滚动”升级从 MongoDB 7.0 升级到 8.0,即在其他成员可用时单独升级各个成员,目的最大限度地减少停机时间。
- 确认从节点: shard1,shard2,shard3
- 升级从节点,一次必须一个。
- 升级前两个库的情况,记录一下,后期对比情况。
1.5 升级shard1
1.5.1.1第一步:关闭并升级从分片
要关闭 mongod 进程,请使用 mongosh 连接到分片节点,并运行以下命令:
根据以上信息,确认分片从节点为server2.
[root@k8s-node6 bin]#mongosh mongodb://server2:27001

shard1 [direct: primary] test> use admin
switched to db admin
shard1 [direct: primary] admin> rs.status();

查询到server2有shard1为从节点,登录到server2上,关闭分片
shard1 [direct: secondary] admin> db.adminCommand( { shutdown: 1 } )
MongoNetworkError: connection 3 to 127.0.0.1:27001 closed
admin>
查到以下已经停止,进程也关闭。

将 7.0 二进制文件替换为 8.0 二进制文件。bin_7.0.14下为老版本的mongod

启动server2上的shard1
[root@k8s-node6 conf]# mongod --config /usr/local/mongodb/shard1/conf/shard1.conf
查看状态:已恢复,stateStr: ‘SECONDARY’

查看进程,已正常。

查看版本,已确认到升级成功


1.5.1.2 第二步:关闭并升级ARBITER
要关闭 mongod 进程,请使用 mongosh 连接到分片节点,并运行以下命令:
根据以上信息,确认分片ARBITER为server3,进行升级。

要关闭 mongod 进程,请使用 mongosh 连接到集群节点,并运行以下命令
[root@k8s-node7 bin]# mongosh mongodb://localhost:27001

shard1 [direct: arbiter] admin> db.adminCommand( { shutdown: 1 } )
MongoNetworkError: connection 2 to 127.0.0.1:27001 closed

启动server3上的shard1
mongod --config /usr/local/mongodb/shard1/conf/shard1.conf
查看状态:已恢复,stateStr: ‘ARBITER’

查看进程

查看版本

查看本地的版本

1.5.1.3第三步:升级主分片节点
- 降级主分片节点,变为从分片节点
- 关闭此从分片节点。
- 并将mongod二进制文件替换为8.0二进制文件。
- 请使用 mongosh 连接到主节点,并运行以下命令:
- 启此从分片节点
1.5.1.3.1降级主分片节点。
登录到主分片节点上

如图:降级完成后,主分片节点已经成为从分片节点。

也可以查看到rs.status()

1.5.1.3.2 升级主分片
关闭已降级主分片节点,
db.adminCommand( { shutdown: 1 } )

查看已降级的主分片节点状态,已经为异常状态,此进程也已停止。

替换二进制文件:
将mongod二进制文件替换为8.0二进制文件。

mongod
启动分片进程
mongod --config /usr/local/mongodb/shard1/conf/shard1.conf
查看server1状态,已恢复,变成从,运行正常。

查看本地版本

第一个分片shard1升级完成。
1.6 升级shard2,shard3
按相同方式升级shard2,shard3,不再赘述。
1.7 升级mongos
一个一个要升级mongos,并kill,重启,官方不支持重启。
将 7.0 二进制文件替换为 8.0 二进制文件。重启mongos


1.8重新启用负载均衡器
使用 mongosh 连接到集群中的 mongos,然后运行 sh.startBalancer() 重新启用负载均衡器:
sh.startBalancer()

查看状态
[direct: mongos] admin> sh.getBalancerState()

至此,升级完成。
1.9 推荐MongoDB Compass来验证数据
升级后,查询数据情况
通过rs.status(),查看库的情况:

两者比较没有任何变化。
查看此前插入的1万条数据。
本次可通过MongoDB Compass的可直观查看结果。
Server1上为3273个

Server2为3388个

Server3上为3339个

升级后,数据还是10000条数据,数据不会有丢失。本次升级成功。
2 注意事项:
-
副本集和分片不应部署在同一主机上:将副本集(Replica Set)和分片(Shard)部署在同一台主机上是不利的,特别是在升级时。由于副本集和分片都使用相同的mongod程序,升级副本集需要替换mongod程序并重启,这会影响到正在运行的分片进程。尽管在本次测试中未观察到直接影响,但仍可能存在潜在的风险。虽然MongoDB官方文档中没有明确指出这一点,但从运维的角度来看,这种部署方式应尽量避免。
-
featureCompatibilityVersion的作用:尽管MongoDB已升级至版本8,但如果featureCompatibilityVersion仍设置为7.0,数据库的行为将遵循MongoDB 7.0的规范。如果将featureCompatibilityVersion从7.0更新为8.0,将会启用MongoDB 8中的一些新特性,并引入新的数据库行为。如果在生产环境中发现不兼容的问题,可以通过回滚到旧版本来解决这些问题;而在开发和测试环境中,这种方式更便于验证和测试。
-
修改featureCompatibilityVersion的方式:可以通过以下命令在MongoDB中设置:
db.runCommand({ setFeatureCompatibilityVersion: “8” })
相关文章:
MongoDB 7 分片副本集升级方案详解(下)
#作者:任少近 文章目录 1.4 分片升级1.5 升级shard11.6 升级shard2,shard31.7 升级mongos1.8重新启用负载均衡器1.9 推荐MongoDB Compass来验证数据 2 注意事项: 1.4 分片升级 使用“滚动”升级从 MongoDB 7.0 升级到 8.0,即在其他成员可用…...
Webpack相关优化总结
在使用webpack时提供了各种配置,这里结合在业务中常用的配置汇总一下可以进行的一系列的webpack优化 缩小文件搜索范围 其原理是在构建时,会以用户配置的Entry为开始依次递归遍历每个Module,在遍历每个Module时会调用相应合适的Loader对原模…...
ollama实践笔记
目录 一、linux安装文件命令: 二、启动ollama 三、linux 如何把ollama serve做为服务方式启动 四、安装deepseek-r1 五、如何在网页中使用ollama? 5.1 安装Open WebUI【不推荐】 5.2 安装ollama-webui-lite 六、Ubuntu安装docker、只需要一句话…...
springCloud-2021.0.9 之 服务调服务 示例
文章目录 前言springCloud-2021.0.9 之 服务调服务 示例1. 主要用到的组件2. 效果3. 源码3.1. 服务A3.2. 服务B接受接口 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。 而且听说点赞的人每…...
如何使用DHTMLX Scheduler的拖放功能,在 JS 日程安排日历中创建一组相同的事件
DHTMLX Scheduler 是一个全面的调度解决方案,涵盖了与规划事件相关的广泛需求。假设您在我们的 Scheduler 文档中找不到任何功能,并且希望在我们的 Scheduler 文档中看到您的项目。在这种情况下,很可能可以使用自定义解决方案来实现此类功能。…...
QxOrm生成json
下载Qxorm-1.5版本 使用vs打开项目,直接生成即可: lib目录中会生成dll和lib文件 新建Qt项目使用Qxorm: 将QxOrm中上面三个目录拷贝到新建的Qt项目中 pro文件添加使用QxOrm第三方库 INCLUDEPATH $$PWD/include/ LIBS -L"$$PWD/lib" LIBS…...
XS9922B(CHIPUP) 模拟高清 寄存器手册 XS9922B 四通道 多合一模拟高清解码芯片
XS9922B 是一款 4 通道模拟复合视频解码芯片,支持 HDCCTV 高清协议和 CVBS 标 清协议,视频制式支持 720P/1080P 高清制式和 960H/D1 标清制式。芯片将接收到的高清 模拟复合视频信号经过模数转化,视频解码以及 2D 图像处理之后…...
Django创建超管用户
在 Django 中创建超级用户(superuser)可以通过命令行工具 createsuperuser 完成。以下是具体步骤: 1. 确保已进行数据库迁移 在创建超级用户前,确保已执行数据库迁移: python manage.py migrate 2. 创建超级用户 …...
基于Kotlin中Flow扩展重试方法
最近项目中统一采用Kotlin的Flow来重构了网络请求相关代码。 目前的场景是,接口在请求的时候需要一个accessToken值,因为此值会过期或者不存在,需要刷新,因此最终方案是在使用Flow请求的时候先获取accessToken值然后再进行接口请求…...
好好说话:深度学习扫盲
大创项目是和目标检测算法YOLO相关的,浅浅了解了一些有关深度学习的知识。在这里根据本人的理解做一些梳理。 深度学习是什么? 之前经常听到AI,机器学习,深度学习这三个概念,但是对于三者的区别一直很模糊。 AI&…...
【状态空间方程】对于状态空间方程矩阵D≠0时的状态反馈与滑模控制
又到新的一年啦,2025新年快乐~。前几个月都没更新,主要还是因为不能把项目上的私密工作写进去,所以暂时没啥可写的。最近在山里实习,突然想起年前遗留了个问题一直没解决,没想到这两天在deepseek的加持下很快解决了&am…...
腾讯大数据基于 StarRocks 的向量检索探索
作者:赵裕隆,腾讯大数据研发工程师 本文整理自腾讯大数据工程师在 StarRocks 年度峰会上的分享,深入探讨了向量检索技术的原理与应用。此功能已应用到腾讯内部多个场景,引入 StarRocks 后,业务不仅不需要维护多套数据库…...
Linux系统调用
文章目录 系统调用和POSIX标准系统调用表程序直接访问系统调用新增系统调用 在linux中,内核空间和用户空间之间增加了一个中间层——系统调用层,如下图: 系统内调用层主要作用: 为用户空间程序提供一层硬件抽象接口。保证系统稳定…...
如何在Servlet容器中使用HttpServletResponse?
HttpServletResponse 是 Java Servlet API 中的一个接口,它代表了服务器对客户端的响应。通过 HttpServletResponse 对象,可以设置响应的状态码、发送数据到客户端(如 HTML 页面、文件等)、添加响应头信息等。下面是如何在 Servle…...
SpringCloud - Seata 分布式事务
前言 该博客为Sentinel学习笔记,主要目的是为了帮助后期快速复习使用 学习视频:7小快速通关SpringCloud 辅助文档:SpringCloud快速通关 源码地址:cloud-demo 一、简介 官网:https://seata.apache.org/zh-cn/ Seata …...
Ansible批量配置服务器免密登录步骤详解
一、准备工作 192.168.85.138 安装ansible,计划配置到139的免密 192.168.85.139 待配置免密 1. 生成SSH密钥对 在Ansible控制节点生成密钥对,用于后续免密认证: ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa 全部回车默认,无…...
互联网大厂中面试的高频计算机网络问题及详解
前言 哈喽各位小伙伴们,本期小梁给大家带来了互联网大厂中计算机网络部分的高频面试题,本文会以通俗易懂的语言以及图解形式描述,希望能给大家的面试带来一点帮助,祝大家offer拿到手软!!! 话不多说,我们立刻进入本期正题! 一、计算机网络基础部分 1 …...
人工智能时代下ai智能语音机器人如何以假乱真?
智能语音机器人若要达到以假乱真的效果,需要在以下几个关键方面不断提升: 一、语音合成技术 音色模拟 多维度采样 对大量真人语音样本进行多维度采样,包括不同年龄、性别、地域的人的语音。例如,采集不同年龄段男性从低沉到清亮…...
【橘子ES】Aggregations 聚合准备
一、聚合的概念 聚合文档 聚合区别于检索,检索是使用一系列条件把文档从es中搜索回来。但是聚合则是在搜索回来的文档的基础上进一步进行处理。 简单来说聚合就是将数据汇总为指标、统计数据或其他分析。聚合可以解决以下几类问题: 我的网站的平均加载…...
vue3读取webrtc-stream 视频流
一.首先下载webrtc-stream,方便自己本地搭建视频流服务 https://download.csdn.net/download/cyw8998/90373521 解压后,启动命令 webrtc-streamer.exe -H 127.0.0.1:8020 二.vue3代码如下 <template><h1>video</h1><video id&…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
