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,即在其他成员可用…...
如何在 MySQL 5.6 中实现按季度分组并找到销量最高的书籍
如何在 MySQL 5.6 中实现按季度分组并找到销量最高的书籍 引言问题描述实现步骤1. 计算每本书在每个季度的累计销量2. 找到每个季度的最高累计销量3. 匹配最高销量的书籍 总结扩展练习 引言 在数据分析和业务报表中,经常需要对数据进行分组统计,并找到每…...
JAVA生产环境(IDEA)排查死锁
使用 IntelliJ IDEA 排查死锁 IntelliJ IDEA 提供了强大的工具来帮助开发者排查死锁问题。以下是具体的排查步骤: 1. 编写并运行代码 首先,我们编写一个可能导致死锁的示例代码: public class DeadlockExample {private static final Obj…...
群体智能优化:粒子群算法(PSO)详解与实战
一、引言:从鸟群行为到优化算法 1995年,社会心理学家James Kennedy和电气工程师Russell Eberhart通过观察鸟群觅食行为,提出了著名的粒子群优化算法(Particle Swarm Optimization, PSO)。这一算法仅用不到30年时间&am…...
k8s集群搭建参考(by lqw)
文章目录 声明配置yum源安装docker安装 kubeadm,kubelet 和 kubectl部署主节点其他节点加入集群安装网络插件 声明 由于看了几个k8s的教程,都存在各种问题,自己搭建的时候,踩了不少坑,最后还是靠百度csdnchatGPT才搭建…...
vue3+vite项目引入electron运行为桌面项目
一、安装electron npm install --save-dev electron二、项目根目录添加electron文件 在此文件夹中添加两个js文件:main.js、preload.js main.js: // Modules to control application life and create native browser window const { app, BrowserWindow } requ…...
教育小程序+AI出题:如何通过自然语言处理技术提升题目质量
随着教育科技的飞速发展,教育小程序已经成为学生与教师之间互动的重要平台之一。与此同时,人工智能(AI)和自然语言处理(NLP)技术的应用正在不断推动教育内容的智能化。特别是在AI出题系统中,如何…...
使用 Flask 构建流式返回服务
使用 Flask 构建流式返回服务是一个很常见的应用场景,特别是在需要逐步传输大数据或进行长时间操作的场景下(比如下载大文件、实时日志等)。Flask 中可以通过 Response 对象来实现流式响应。以下是一个简单的例子,展示了如何在 Fl…...
Redis 集群相关知识介绍
Redis 集群详解:从入门到实战 Redis 是一个高性能的开源数据库,支持多种数据结构,广泛应用于缓存、消息队列、实时分析等领域。随着业务规模的增长,单机 Redis 的性能和容量往往无法满足需求,因此 Redis 集群…...
宏基传奇swift edge偶尔开机BIOS重置
电脑是acer swift edge, SFA16-41,出厂是Win11系统, BIOS版本出厂1.04,更新到了目前最新1.10。 问题是 会偶尔开机ACER图标变小跑到屏幕左上方,下次开机BIOS就会被重置,开机等待很长时间。 因为是偶尔现象的…...
DeepSeek是如何通过“蒸馏”技术打造自己的AI模型
1 引言: 最近,外媒对中国公司——DeepSeek进行了猛烈抨击,指控其采用了所谓的“蒸馏”(Distillation)技术,涉嫌抄袭甚至作弊。那么,什么是“蒸馏”技术? 在人工智能领域,…...
你如何利用SIMD(如SSE/AVX)优化图像处理的性能?
SIMD优化问题 1. SIMD 在图像处理中的优化方式2. 典型应用场景3. SIMD 的常见优化技巧4. 总结 利用 SIMD(Single Instruction, Multiple Data) 指令集(如 SSE/AVX/AVX2/AVX-512)优化图像处理的性能,可以极大地提升计算…...
支付宝 IoT 设备入门宝典(上)设备管理篇
相信不少朋友最近都被支付宝“碰一下”广告刷屏,“不用打开 APP 支付就碰一下”几个字一出简直自带BGM……其实“碰一下”就是支付宝 IoT 设备的一种,趁着热度还在,我会分为设备管理和设备经营上下两篇,简单介绍一下支付宝 IoT&am…...
Go语言 Web框架Gin
Go语言 Web框架Gin 参考 https://docs.fengfengzhidao.com https://www.liwenzhou.com/posts/Go/gin/#c-0-7-2 返回各种值 返回字符串 package mainimport ("net/http""github.com/gin-gonic/gin")func main() {router : gin.Default()router.GET("…...
蓝桥杯-洛谷刷题-day5(C++)(为未完成)
1.P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布 i.题目 ii.代码 #include <iostream> #include <string> using namespace std;int N, Na, Nb; //0-"剪刀", 1-"石头", 2-"布", 3-"蜥", 4-"斯"࿱…...
【Unity3D优化】使用ASTC压缩格式优化内存
在Unity3D手游开发中,合理选择纹理压缩格式对于优化内存占用、提高渲染效率至关重要。本文将记录近期在项目内进行的图片压缩格式优化过程,重点介绍从ETC2到ASTC 5x5的优化方案及其带来的收益。 1. 现状分析:从ETC2到ASTC 6x6 block 在项目…...
NO.13十六届蓝桥杯备战|条件操作符|三目操作符|逻辑操作符|!||||(C++)
条件操作符 条件操作符介绍 条件操作符也叫三⽬操作符,需要接受三个操作数的,形式如下: exp1 ? exp2 : exp3条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算, exp2 计算的结果是整个表达式的结果&am…...
【uniapp-小程序】实现方法调用的全局tips弹窗
【uniapp-小程序】实现方法调用的全局tips弹窗 开发背景弹窗组件全局调用封装配置项入参全局注入使用 附带:如何在uniapp-H5项目中实现全局自定义弹窗组件定义定义vue插件引入 笑死,只有在想找工作的时候才会想更新博客。 开发背景 本来是个uniapp开发…...
springboot如何将lib和jar分离
遇到一个问题,就是每次maven package或者maven install后target中的jar很大,少的50几MB,大的100多兆 优化前: 优化后: 优化前 优化后压缩率77.2MB4.65MB93% 具体方案: pom.xml中 <build><…...
深入探索C语言中的字符串处理函数:strstr与strtok
在C语言的字符串处理领域, strstr 和 strtok 是两个非常重要的函数,它们各自承担着独特的功能,为开发者处理字符串提供了强大的支持。 一、strstr函数:字符串查找的利器 strstr 函数用于在一个字符串中查找另一个字符串的首次出现…...
Django学习笔记(第一天:Django基本知识简介与启动)
博主毕业已经工作一年多了,最基本的测试工作已经完全掌握。一方面为了解决当前公司没有自动化测试平台的痛点,另一方面为了向更高级的测试架构师转型,于是重温Django的知识,用于后期搭建测试自动化平台。 为什么不选择Java&#x…...
npm版本号标记
在 npm 中,版本号的标记遵循 语义化版本控制(Semantic Versioning, SemVer) 的规则,版本号通常由 主版本号(major)、次版本号(minor) 和 修订版本号(patch) 组成,格式为: <major>.<minor>.<patch>1. 版本号格式 主版本号(major):当你做了不兼…...
无人机雨季应急救灾技术详解
无人机在雨季应急救灾中发挥着至关重要的作用,其凭借机动灵活、反应迅速、高效安全等特点,为救灾工作提供了强有力的技术支撑。以下是对无人机雨季应急救灾技术的详细解析: 一、无人机在雨季应急救灾中的应用场景 1. 灾情侦查与监测 无人机…...
算法与数据结构(多数元素)
题目 思路 方法一:哈希表 因为要求出现次数最多的元素,所以我们可以使用哈希映射存储每个元素及其出现的次数。每次记录出现的次数若比最大次数大,则替换。 方法二:摩尔算法 摩尔的核心算法就是对抗,因为存在次数多…...
详解如何使用Pytest内置Fixture tmp_path 管理临时文件
关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 临时目录在测试中起着至关重要的作用,它为执行和验证代码提供了一个可控…...
量子计算的五大优势
量子计算的优势有哪些? 量子计算是一个快速发展的领域,有望彻底改变我们处理复杂计算问题的方式。那么,量子计算的优势是什么?与经典计算相比,量子计算又有哪些优势呢?当我们探索量子力学的世界以及量子系…...
行内元素和块级元素
行内元素和块级元素 1.行内元素1.1什么是行内元素1.2行内元素的特点1.3常见的行内元素 2.块级元素2.1什么是块级元素2.2块级元素的特点2.3常见的块级元素 3.行内元素和块级元素的区别 1.行内元素 1.1什么是行内元素 行内元素是指在网页中不会独占一行,而是与其他行内元素在同…...
java面试题-集合篇
Collection 1.Collection有哪些类? Java集合框架中的Collection接口是所有集合类的基础接口,定义了一些基本的集合操作,如添加元素、删除元素、判断是否包含某个元素等。常见的集合类包括List、Set和Queue。 List List接口定义了按照索引…...
二十九、vite项目集成webpack+vue2项目
一、开发 基座应用: 1、安装依赖 npm i @micro-zoe/micro-app@0.8.6 --save 2、在入口处引入(main.ts) import microApp from @micro-zoe/micro-appmicroApp.start()...
小程序之间实现互相跳转的逻辑
1:小程序之间可以实现互相跳转吗 可以实现互相跳转! 2:小程序跳转是否有限制 有限制!限制如下 2.1:需要用户触发跳转 从 2.3.0 版本开始,若用户未点击小程序页面任意位置,则开发者将无法调用此接口自动跳转至其他小程序。 2.2:需要用户确认跳转 从 2.3.0 版本开始…...
算法——数学建模的十大常用算法
数学建模的十大常用算法在数学建模竞赛和实际问题解决中起着至关重要的作用。以下是这些算法的具体信息、应用场景以及部分算法的C语言代码示例(由于篇幅限制,这里只给出部分算法的简要代码或思路,实际应用中可能需要根据具体问题进行调整和扩…...
cookie、session、jwt、Oauth2.0、sso 分别有什么用
cookie、session、jwt都是 web 应用中的认证方式,最早只有 cookie,后面觉得所有数据存储在客户端不安全,就出现了 cookie-session,再后面有了 jwt。 cookie工作原理 cookie 数据存储在用户的本地。服务器完全根据 cookie 确定访…...
maven使用默认settings.xml配置时,Idea基于pom.xml更新依赖时报错,有些组件下载时连接超时
1、问题背景:maven使用默认settings.xml配置时,Idea基于pom.xml更新依赖时报错,有些组件下载时连接超时, 通过日志发下,去连接maven.org网站下载依赖,有时候肯定会超时。 2、解决办法:使用国外…...
信息收集-Web应用搭建架构指纹识别WAF判断蜜罐排除开发框架组件应用
知识点: 1、信息收集-Web应用-架构分析&指纹识别 2、信息收集-Web应用-架构分析&WAF&蜜罐 3、信息收集-Web应用-架构分析&框架组件识别 指纹识别 EHole_magic https://github.com/lemonlove7/EHole_magic 指纹识别 Wappalyzer https://github.com…...
蓝桥杯之图
图: 对于图来说,重点在于之后的最短路径算法,这边简单做一下了解即可...
ProxySQL构建PolarDB-X标准版高可用路由服务三节点集群
ProxySQL构建PolarDB-X标准版高可用路由服务三节点集群 一、PolarDB-X标准版主备集群搭建 三台机器上传 polardbx 包,包可以从官网https://openpolardb.com/download获取,这里提供离线rpm。 1、上传 polardbx 安装包 到 /opt目录下 rpm -ivh t-pol…...
【leetcode】双指针:移动零 and 复写零
文章目录 1.移动零2.复写零 1.移动零 class Solution { public:void moveZeroes(vector<int>& nums) {for (int cur 0, dest -1; cur < nums.size(); cur)if (nums[cur] ! 0)swap(nums[dest], nums[cur]);} };class Solution { public:void moveZeroes(vector&l…...
正则化(Regularization)和正则表达式(Regular Expression)区别
文章目录 1. **正则化(Regularization)**2. **正则表达式(Regular Expression)**关键区别为什么名字相近? 正则化(Regularization)和正则表达式(Regular Expression)不是…...
【C++】C++-教师信息管理系统(含源码+数据文件)【独一无二】
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 【C】C教师信息管理系统(含源码&#x…...
MySql从入门到精通
第一部分 基础篇 1.概述 1.1 启动与停止MySql 启动 net start mysql80 停止 net stop mysql80 注意: mysql开机默认启动 1.2 客户端连接 方法一:使用MySQL提供的命令行客户端方法二:系统自带的命令行工具执行指令 mysql [-h 127.0.0.1] …...
27、深度学习-自学之路-NLP自然语言处理-做一个简单的项目识别一组电影评论,来判断电影评论是积极的,还是消极的。
一、如果我们要做这个项目,第一步我们要做的就是需要有对应的训练数据集。 这里提供两个数据集,一个是原始评论数据集《reviews.txt》,以及对应的评论是消极还是积极的数据集《labels.txt》,下面的程序就是找到这两个数据集&…...
微信小程序 - 组件和样式
组件和样式介绍 在开 Web 网站的时候: 页面的结构由 HTML 进行编写,例如:经常会用到 div、p、 span、img、a 等标签 页面的样式由 CSS 进行编写,例如:经常会采用 .class 、#id 、element 等选择器 但在小程序中不能…...
滤波总结 波形处理原理 如何对一个规律的波形进行滤波 显现出真正的波形 如何设计滤波
需要用到的软件:waveserialport vofa++ 1.波形想用MCU进行采集首先你要考虑到你的采集频率因为如果你的对象波形即你要采集的波形,他过于快速的话有一些MCU它是不能的比如说有一些它的主频才36兆72兆呢你如果遇到一个特别快的波形毫秒级别那他就检测不了 2.…...
【代码随想录】刷题记录(115)-岛屿数量(广搜)
题目描述: 题目描述 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。 输入描…...
Git指南-从入门到精通
代码提交和同步命令 流程图如下: 第零步: 工作区与仓库保持一致第一步: 文件增删改,变为已修改状态第二步: git add ,变为已暂存状态 bash $ git status $ git add --all # 当前项目下的所有更改 $ git add . # 当前目录下的所有更改 $ g…...
uvm错误记录4
如下所示,奇怪的是penable莫名其妙的出X。可问题,我发送激励了。 仔细定位发现,39行用的是vif中的penable, 问题是都是赋值,却出现同时赋值多次,这是因为nonblocking和blocking同时触发导致的,因此…...
用大模型学大模型03-数学基础 概率论
https://metaso.cn/s/Jp0OU9w 提示词:我正在学习深度学习相关的数学知识,学到了概率论与统计学部分,给我一个入门级的完整教程和实例。 好的,我现在需要回答用户关于深度学习所需的概率论与统计学入门教程和实例的问题。用户希望得到一个完整…...
数字电路-基础逻辑门实验
基础逻辑门是数字电路设计的核心元件,它们执行的是基本的逻辑运算。通过这些基本运算,可以构建出更为复杂的逻辑功能。常见的基础逻辑门包括与门(AND)、或门(OR)、非门(NOT)、异或门…...
基于springboot轨道交通安全评估系统(源码+lw+部署文档+讲解),源码可白嫖!
摘要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,轨道交通安全评估管理当然不能排除在外。轨道交通安全评估系统是在实际应用和软件工程的开发原理之上,运用Java语言以及Spring…...
多能互补综合能源系统,改变能源结构---安科瑞 吴雅芳
多能互补综合能源系统是一种通过整合多种能源的形势(如电力、天然气、热能、冷能等)和多种能源技术(如可再生能源、储能技术、智能电网等),实现能源利用和配置调整的系统。其目标是通过多能互补和协同优化,…...