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

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,即在其他成员可用…...

AI技术未来趋势

AI技术未来趋势 目录 AI技术未来趋势第一,AGI(通用人工智能)发展步伐在放慢;第二,ChatGPT等问答式AI已接近极限,复杂推理的“慢思考”模式成为新方向;第三,除了少数科技巨头,大多数公司都专注于做专业大模型第四,模型越做越小,进入轻量化时代第五,高质量数据、合成数据使模型知…...

vue 文件下载(导出)excel的方法

目前有一个到处功能的需求,这是我用过DeepSeek生成的导出(下载)excel的一个方法。 1.excel的文件名是后端生成的,放在了响应头那里。 2.这里也可以自己制定文件名。 3.axios用的是原生的axios,不要用处理过的&#xff…...

Flask和Django相比哪个更适合新手?

Flask 与 Django:哪个更适合新手? 对于新手来说,选择 Flask 还是 Django 主要取决于你的具体需求和项目复杂度。以下是两者的详细对比,帮助你做出选择: 1. Flask 优点 简单易用:Flask 是一个轻量级的微框架,代码简洁,易于理解和上手。适合初学者快速入门。灵活性高:…...

【含开题报告+文档+PPT+源码】基于spring boot的固定资产管理系统

开题报告 本研究论文提出了一种基于SpringBoot框架构建的全面且高效的固定资产管理系统,旨在优化企业内部的固定资产全生命周期管理流程。该系统集成了员工权限管理、业务流程处理及数据分析于一体,实现了员工便捷的登录注册功能,并通过安全…...

Unity嵌入到Winform

Unity嵌入到Winform Winform工程🌈...

Svelte 最新中文文档翻译(8)—— @html、@const、@debug 模板语法

前言 Svelte,一个非常“有趣”、用起来“很爽”的前端框架。从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1: Svelte 以其独特的编…...

Qt Designer菜鸟使用教程(实现一个本地英文翻译软件)

1 安装Qt Designer 安装这个包的时候会自带安装 Qt Designer, 安装目录为python的安装根目录的 Lib/site-packages/qt5_applications/Qt/bin 目录下。 pip install pyqt5-tools2 新建窗体 2.1 新建主窗体 创建之后如下图: 设置主窗口大小: 设置窗…...

CPT205 计算机图形学 OpenGL 3D实践(CW2)

文章目录 1. 介绍2. 设计3. 准备阶段4. 角色构建5. 场景构建6. 交互部分6.1 键盘交互6.2 鼠标交互6.3 鼠标点击出多级菜单进行交互 7. 缺点与问题7.1 程序bug7.2 游戏乐趣不足7.3 画面不够好看 8. 完整代码 1. 介绍 前面已经分享过了关于CPT205的CW1的2D作业,这次C…...

【网络安全 | 漏洞挖掘】跨子域账户合并导致的账户劫持与删除

未经许可,不得转载。 文章目录 概述正文漏洞成因概述 在对目标系统进行安全测试时,发现其运行着两个独立的域名——一个用于司机用户,一个用于开发者/企业用户。表面上看,这两个域名各自独立管理账户,但测试表明它们在处理电子邮件变更时存在严重的逻辑漏洞。该漏洞允许攻…...

利用蓝耘智算平台深度搭建deepseek R1模型,进行深度机器学习

大佬请阅读 前言关于DeepSeek 的显著优点卓越的性能表现低廉的训练成本广泛的应用场景开放的开源策略 DeepSeek 与其他 AI 对比什么是蓝耘智算平台为什么使用蓝耘智算平台搭建我们的deepseek如何使用蓝耘 GPU 智算云平台搭建我们的R1模型并成功进行调用测试11. AVL树节点结构2.…...

传输层协议TCP (上)

文章目录 前言TCP报文格式TCP连接管理连接建立与中止三次握手三次握手的状态变化为什么是三次握手 四次挥手四次挥手的状态变化FIN_WAIT_2 状态可能导致连接长时间不释放的问题TIME_WAIT状态作用 复位报文段非法连接请求其他异常情况 半打开连接同时握手同时关闭 参考资料 前言…...

深度学习框架探秘|Keras:深度学习的魔法钥匙

一、引言:深度学习浪潮中的 Keras 前面的文章我们探秘了深度学习框架中的两大明星框架 —— TensorFlow 和 PyTorch 以及 两大框架的对比 在深度学习的众多框架中,还有一款框架备受开发者们的喜爱 —— Keras 。它就像是一位贴心的助手,为我…...

使用爬虫获取1688商品分类:实战案例指南

在电商领域,获取商品分类信息对于市场分析、选品决策和竞争情报收集至关重要。1688作为国内领先的B2B电商平台,提供了丰富的商品分类数据。通过爬虫技术,我们可以高效地获取这些分类信息,为商业决策提供有力支持。 一、为什么选择…...

MySQL常见错误码及解决方法(1130、1461、2003、1040、2000、1049、1062、1129、2002、1690等)

目录 【问题1】、FATAL: error 1130: Unknown error 1130 【问题2】、FATAL: error: 1461 【问题3】、ERROR 2003 (HY000): Cant connect to MySQL server on "" (113) 【问题4】、FATAL: error 2003: Cant connect to MySQL server on 172.19.111.151 (111) 【问…...

【k8s应用管理】kubernetes lngress资源管理

文章目录 补充**Service 的作用****Kubernetes 外部访问方案** Kubernetes IngressIngress 概述Kubernetes 外部访问方案对比Ingress 的组成**Ingress-Nginx 工作原理**Ingress 控制器的部署方式1. DaemonSet Host 网络模式2. Deployment NodePort/LoadBalancer Service 创建…...

2.11学习

misc buu-荷兰宽带泄露 下载附件得到了一个后缀为.bin的文件 是宽带数据文件,用RouterPassView工具进行查看。大多数现代路由器都可以让您备份一个文件路由器的配置文件,然后在需要的时候从文件中恢复配置。路由器的备份文件通常包含了像您的ISP的用户…...

Python 调用 DeepSeek API 案例详细教程

本案例为以 Python 为例的调用 DeepSeek API 的小白入门级详细教程 步骤 先注册并登录 DeepSeek 官网:https://www.deepseek.com/ 手机号验证码注册或登录即可 创建 API KEY 注意保存,写代码时必须提供的 打开 Pycharm 创建工程 并安装 OpenAI 库编写代…...

C++ Primer 函数基础

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...

qt QPlainTextEdit总结

QPlainTextEdit 概述 用途:专为处理纯文本设计,适合大文本编辑和简单文本显示(如日志、代码编辑器)。 特点:相比QTextEdit,轻量高效,支持快速加载和滚动大文件,默认不支持富文本。 …...

【SVN基础】

软件:ToritoiseSVN 代码版本回退:回退到上一个版本 问题:SVN版本已经提交了版本1和版本2,现在发现不需要版本2的内容,需要回退到版本1然后继续开发。 如图SVN版本已经提交到了107版本,那么本地仓库也已经…...

kron积计算mask类别矩阵

文章目录 1. 生成类别矩阵如下2. pytorch 代码3. 循环移动矩阵 1. 生成类别矩阵如下 2. pytorch 代码 import torch import torch.nn as nn import torch.nn.functional as Ftorch.set_printoptions(precision3, sci_modeFalse)if __name__ "__main__":run_code 0…...

【前端】【vue】vue2/3,nuxt的插槽使用详解

插槽在Vue2、Vue3和不同版本Nuxt中的使用 Vue2中的插槽 基础插槽 在Vue2中&#xff0c;基础插槽允许在组件的模板中定义一个占位符&#xff0c;然后在使用组件时插入自定义内容。例如&#xff0c;创建一个简单的MyBox组件&#xff1a; <template><div class"…...

Stable Diffusion 安装教程(附安装包) 【SD三种安装方式,Win+Mac一篇文章讲明白】

“Stable Diffusion的门槛过高、不会安装&#xff1f;没关系&#xff0c;这篇文章教会你如何安装&#xff01;” Stable Diffusion的安装部署其实并不困难&#xff0c;只需简单点击几下&#xff0c;几分钟就能安装好&#xff0c;不管是windows还是苹果mac电脑&#xff0c;关于…...

网络安全用centos干嘛 网络安全需要学linux吗

网络安全为啥要学Linux系统&#xff0c;据不完全统计&#xff0c;Linux系统在数据中心操作系统上的份额高达70%。它一般运行于服务器和超级计算机上。 所以我们日常访问的网站后台和app后端都是部署在Linux服务器上的&#xff0c;如果你不会Linux系统操作&#xff0c;那么很多…...

使用Opencv方法进行模板匹配

1. 引言 模板匹配&#xff08;Template Matching&#xff09;是一种基于图像处理的模式识别技术&#xff0c;主要用于在目标图像中查找与给定模板最匹配的区域。它在目标检测、工业检测、机器人视觉等领域有广泛应用。本文将详细介绍传统图像处理方法实现模板匹配的基本原理、…...

jupyter notebook中3种读图片的方法_与_图片翻转(上下翻转,左右翻转,上下左右翻转)

已有图片cat.jpg 相对于代码的位置&#xff0c;可以用./cat.jpg进行读取。 下面是3种读图片的方法。 1.python读图片-pillow 图片文件不适合用open去读取 用open读图片&#xff0c;易引发UnicodeDecodeError: gbk codec cant decode byte 0xff in position 0: illegal multib…...

微软官方出品GPT大模型编排工具:7个开源项目

今天一起盘点下&#xff0c;12月份推荐的7个.Net开源项目&#xff08;点击标题查看详情&#xff09;。 1、一个浏览器自动化操作的.Net开源库 这是一个基于 Google 开源的 Node.js 库 Puppeteer 的 .NET 开源库&#xff0c;方便开发人员使用无头 Web 浏览器抓取 Web、检索 Ja…...

MongoDB 的批量查找符号

一、$in 操作符 1. 功能 $in 操作符用于匹配字段值等于指定数组中任意值的文档&#xff0c;能批量查找多个特定值的文档。 2. 语法示例 db.collection.find({ field: { $in: [value1, value2, ...] } }); 3. 代码示例 假设有个名为 users 的集合&#xff0c;里面存有用户…...

bash shell笔记——循环结构

0 引言 本文主要介绍linux bash shell循环结构的基本使用 1 测试环境 查看系统版本&#xff1a; uname -a : Ubuntu 18.04 查看bash版本&#xff1a; bash -version : GNU bash, version 4.4.20(1)-release 创建.sh文件&#xff1a; vim 00test.sh 修改00test.sh权限&…...