日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

關于mongodb版本升級問題_MongoDB

作者:WFkwYu ? 更新時間: 2023-05-16 編程語言

一、背景

目前公司的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_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({"_id" : "authSchema"})> schema.currentVersion = 33> 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版本升級的完整過程了!

總結

原文鏈接:https://blog.csdn.net/qq_35663625/article/details/97785424

欄目分類
最近更新