当前位置: 首页 > 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” })

相关文章:

  • 用Echarts的柱状图实现圆柱体效果
  • linux c 读写锁pthread_rwlock
  • 3D打印技术:如何让古老文物重获新生?
  • MYSQL直接在SQL提取json字符串中的内容-----将13位时间戳转换成标准的日期格式【记录SQL常用函数】
  • 【如何掌握CSP-J 信奥赛中的模拟算法】
  • Python深度学习代做目标检测NLP计算机视觉强化学习
  • 【Linux系统】—— 简易进度条的实现
  • C++中运算符的底层是不是用函数实现的?
  • MATLAB使用技巧之局部放大图的制作(二)
  • 算法服务器跟算力卡有什么区别?
  • Eclipse JSP/Servlet 深入解析
  • 【C语言 】C语言 桌游开发数字竞拍(源码)【独一无二】
  • 微信小程序开发实用技巧篇
  • 支持列表拖拽嵌套,AI流式输出的多模态文档编辑器flowmix/docx: 全面升级
  • SQL Server:查看内存使用情况
  • 信号与系统第二章学习(五)
  • npm安装时无法访问github域名的解决方法
  • 网络安全事件分级
  • 图像变换:了解透视变换原理及OpenCV实现
  • qt QToolButton使用总结
  • 花290多万维修保质期仅一年多?媒体四问凤阳鼓楼“瓦片脱落”
  • 王毅将出席《关于建立国际调解院的公约》签署仪式
  • 4天内,云南昆明又一县市区原主官被查
  • 世卫大会拒绝涉台提案,外交部:坚持一个中国原则是人心所向
  • 一季度支持科技创新和制造业发展减税降费及退税4241亿元
  • 左手免费午餐右手花开岭,邓飞14年公益之路的中国贡献