当前位置: 首页 > news >正文

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,即在其他成员可用时单独升级各个成员,目的最大限度地减少停机时间。

  1. 确认从节点: shard1,shard2,shard3
  2. 升级从节点,一次必须一个。
  3. 升级前两个库的情况,记录一下,后期对比情况。

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第三步:升级主分片节点

  1. 降级主分片节点,变为从分片节点
  2. 关闭此从分片节点。
  3. 并将mongod二进制文件替换为8.0二进制文件。
  4. 请使用 mongosh 连接到主节点,并运行以下命令:
  5. 启此从分片节点

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 注意事项:

  1. 副本集和分片不应部署在同一主机上:将副本集(Replica Set)和分片(Shard)部署在同一台主机上是不利的,特别是在升级时。由于副本集和分片都使用相同的mongod程序,升级副本集需要替换mongod程序并重启,这会影响到正在运行的分片进程。尽管在本次测试中未观察到直接影响,但仍可能存在潜在的风险。虽然MongoDB官方文档中没有明确指出这一点,但从运维的角度来看,这种部署方式应尽量避免。

  2. featureCompatibilityVersion的作用:尽管MongoDB已升级至版本8,但如果featureCompatibilityVersion仍设置为7.0,数据库的行为将遵循MongoDB 7.0的规范。如果将featureCompatibilityVersion从7.0更新为8.0,将会启用MongoDB 8中的一些新特性,并引入新的数据库行为。如果在生产环境中发现不兼容的问题,可以通过回滚到旧版本来解决这些问题;而在开发和测试环境中,这种方式更便于验证和测试。

  3. 修改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&#xff0c;方便自己本地搭建视频流服务 https://download.csdn.net/download/cyw8998/90373521 解压后&#xff0c;启动命令 webrtc-streamer.exe -H 127.0.0.1:8020 二.vue3代码如下 <template><h1>video</h1><video id&…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...