关于mongodb版本升级问题(mongodb删除集合)这样也行?

随心笔谈9个月前发布 admin
199 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章详细介绍了如何从MongoDB 3.0.6升级到3.6以上。升级过程需要分两步:先升级到3.4,再升级到3.6。文章提到了以下关键步骤: 1. **备份配置和数据**:确保在升级前备份MongoDB的配置文件和数据。2. **修改认证方式**:从旧的MONGODB-CR认证方式切换到新的SCRAM-SHA-1认证方式。3. **启动服务**:通过MongoDB服务启动配置服务器(mongod)并验证配置。4. **配置副本集**:在副本集模式下配置MongoDB,确保配置服务器能够正确初始化。5. **升级版本**:逐步升级到3.4,再升级到3.6,确保每个版本都能正常运行。6. **重启服务**:在升级完成后,重启MongoDB服务并验证配置。 文章还提到了一些注意事项,包括备份数据的重要性、配置服务器的副本集配置、数据迁移和恢复等问题。整个过程需要耐心和详细操作,以确保顺利升级。 这篇文章为读者提供了一个完整的MongoDB版本升级指南,适合希望从旧版本升级到新版本的用户参考。



目录一、背景二、三个重点需要注意三、环境四、下载各个版本的mongodb包五、下面介绍如何从3.0升级到3.4总结

目前公司的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、mongosmongodb2:分片副本1、分片副本2、分片副本3、config、mongosmongodb3:分片副本1、分片副本2、分片副本3、config、mongos

[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

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 }

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服务会报错,如下:

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 adminswitched to db admin> var schema=db.system.version.findOne()

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版本升级的完整过程了!

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

您可能感兴趣的文章:MongoDB使用小结:一些不常见的经验分享MongoDB使用小结 一些常用操作分享MongoDB数据库插入、更新和删除操作详解

© 版权声明

相关文章