文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

关于mongodb版本升级问题

2023-02-17 10:00

关注

一、背景

目前公司的mongodb版本是3.0.6的老版本,公司希望将mongodb版本升级到3.6以上,那么无语了,以前没做过数据库升级,在脑子里的第一反应是要不要重新部署一套mongodb副本集+分片的模式,又或者是可以直接从3.0.6的版本升级到3.6版本以上。

经过查阅资料发现,实际mongodb版本升级是需要一步一步来的,需要先升级到3.4版本,再升级到3.6版本。

3.0 ======> 3.4 ======> 3.6

二、三个重点需要注意

1、一定要备份config数据库;

2、修改认证方式;需要将最新的认证方式SCRAM-SHA-1 改成老的认证方式 MONGODB-CR,老用户依然能正常登陆。

3、可通过开启认证的方式启动服务,通过老版本用户登陆授权;

三、环境

当前mongodb集群三台机器,环境是副本集+分片模式

四、下载各个版本的mongodb包

[yukw@mongodb1 mongodbwork3.4]$ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.4.tgz              ##下载版本为3.4.4[yukw@mongodb1 mongodbwork3.4]$ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.6.5.tgz				##下载版本为3.6.5

五、下面介绍如何从3.0升级到3.4

1、拷贝包到相应目录

[yukw@mongodb1 mongodbwork3.4]$ mkdir /data/service/mongodbwork3.4[yukw@mongodb1 mongodbwork3.4]$ cp mongodb-linux-x86_64-rhel62-3.4.4.tgz /data/service/mongodbwork3.4/

2、解压压缩包

[yukw@mongodb1 mongodbwork3.4]$ tar xf mongodb-linux-x86_64-rhel62-3.4.4.tgz[yukw@mongodb1 mongodbwork3.4]$ mv mongodb-linux-x86_64-rhel62-3.4.4 mongodb

3、停止mongodb服务

[yukw@mongodb1 mongodbwork3.4]$ ps -ef |grep mongo |grep -v grep | awk '{print $2}' | xargs kill -2   ##每台机器都执行

以3.4版本的mongodb二进制文件依次启动三个分片服务

[yukw@mongodb1 mongodbwork3.4] $/data/service/mongodbwork3.4/mongodb/bin/mongod -f /etc/mongodb1.conf   ##每台机器都执行,mongodb1.conf 为mongod1配置文件[yukw@mongodb1 mongodbwork3.4] $/data/service/mongodbwork3.4/mongodb/bin/mongod -f /etc/mongodb2.conf  ##每台机器都执行,mongodb2.conf 为mongod2配置文件[yukw@mongodb1 mongodbwork3.4] $/data/service/mongodbwork3.4/mongodb/bin/mongod -f /etc/mongodb3.conf  ##每台机器都执行,mongodb3.conf 为mongod3配置文件

4、在PRIMARY机器上升级版本(在副本集的主上运行)

[yukw@mongodb1 mongodbwork3.4]$ /data/service/mongodbwork3.4/mongodb/bin/mongo -port mongodb1_protconfigdb:PRIMARY> use adminswitched to db adminshard1:PRIMARY> db.auth("user_name","password")1configdb:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } ){ "ok" : 1 }configdb:PRIMARY> db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ){ "featureCompatibilityVersion" : "3.4", "ok" : 1 }###############上面primary机器已经升级到3.4,然后再到副本集机器验证##############[yukw@mongodb1 mongodbwork3.4]$ /data/service/mongodbwork3.4/mongodb/bin/mongo -port mongodb2_protconfigdb:PRIMARY> use adminswitched to db adminshard1:PRIMARY> db.auth("user_name","password")1configdb:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } ){ "ok" : 1 }###############上面primary机器已经升级到3.4,然后再到副本集机器验证##############[yukw@mongodb1 mongodbwork3.4]$ /data/service/mongodbwork3.4/mongodb/bin/mongo -port mongodb3_protconfigdb:PRIMARY> use adminswitched to db adminshard1:PRIMARY> db.auth("user_name","password")1configdb:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } ){ "ok" : 1 }###############上面primary机器已经升级到3.4,然后再到副本集机器验证##############

5、上每台副本集机器查看分片服务版本是否更新

shard1:SECONDARY> use adminswitched to db adminshard1:SECONDARY> db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ){ "featureCompatibilityVersion" : "3.4", "ok" : 1 }

关于mongodb版本升级问题

6、启动配置服务

[yukw@mongodb1 mongodbwork3.4]$ /data/service/mongodbwork3.4/mongodb/bin/mongod -f /etc/mongo_config.conf     ##三台机器均执行

7、config配置服务配置副本集

这里需要注意先将config数据文件备份(这一步读者自己去备份),因为在配置副本集时可能会提示副本集目录中存在数据,无法初始化

[yukw@mongodb3 data]$ /data/service/mongodbwork3.4/mongodb/bin/mongo -port config_port> use adminswitched to db admin> configdb1={_id:'configdb',members:[{_id:0,host:'10.0.1.211:20000',priority:9},{_id:1,host:'10.0.1.209:20000',priority:5},{_id:2,host:'10.0.1.111:20000',priority:7}]}                             ## 配置副本集并设置权重>  rs.initiate(configdb1)     ##初始化配置

这里解释一下,3.0版本不需要config配置服务设置副本集就能启动mongos路由服务,但是在3.4版本需要将config配置服务配置副本集,不然启动mongos服务会报错,如下:

关于mongodb版本升级问题

8、修改mongos配置文件

关于mongodb版本升级问题

9、启动mongos路由服务

[yukw@mongodb1 data]$ /data/service/mongodbwork3.4/mongodb/bin/mongos -f /etc/mongo_mongos.conf   ##每台机器都执行

10、修改认证方式

[yukw@mongodb1 data]$ /data/service/mongodbwork3.4/mongodb/bin/mongo -port 30000> use adminswitched to db admin>  var schema = db.system.version.findOne({"_id" : "authSchema"})> schema.currentVersion = 33> db.system.version.save(schema)WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

11、将3.4版本升级到3.6,原理同上

注意:

好了,这就是mongodb版本升级的完整过程了!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯