mongodb版本升级

mongodb版本升级

一、背景
    目前公司的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集群三台机器,环境是副本集+分片模式
mongodb1:分片主1、分片主2、分片主3、config、mongos
mongodb2:分片副本1、分片副本2、分片副本3、config、mongos
mongodb3:分片副本1、分片副本2、分片副本3、config、mongos

四、下载各个版本的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_prot
configdb:PRIMARY> use admin
switched to db admin
shard1:PRIMARY> db.auth("user_name","password")
1
configdb: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_prot
configdb:PRIMARY> use admin
switched to db admin
shard1:PRIMARY> db.auth("user_name","password")
1
configdb:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
{ "ok" : 1 }
###############上面primary机器已经升级到3.4,然后再到副本集机器验证##############
[yukw@mongodb1 mongodbwork3.4]$ /data/service/mongodbwork3.4/mongodb/bin/mongo -port mongodb3_prot
configdb:PRIMARY> use admin
switched to db admin
shard1:PRIMARY> db.auth("user_name","password")
1
configdb:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
{ "ok" : 1 }
###############上面primary机器已经升级到3.4,然后再到副本集机器验证##############

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

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

在这里插入图片描述
##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 admin
switched 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服务会报错,如下:在这里插入图片描述
##8、修改mongos配置文件
在这里插入图片描述
##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 admin
switched to db admin
>  var schema = db.system.version.findOne({"_id" : "authSchema"})
> schema.currentVersion = 3
3
> db.system.version.save(schema)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

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

注意:
1、配置服务器需要做副本集,因为mongos路由配置文件里需要填写配置服务器的副本名称;
2、原有的config目录下的数据存在,导致创建配置服务器副本集报错;
3、数据库数据丢失,需要重新恢复;
4、分片重新做;
5、config和mongos服务中之前建立的用户丢失;
6、索引不兼容,版本3.0.6中是 v:1,版本3.4.x中是v:2,但是恢复数据后,索引会自动变成v:2

好了,这就是mongodb版本升级的完整过程了,如有问题可联系博主一起交流讨论!

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值