網站首頁 編程語言 正文
一、背景
目前公司的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
相關推薦
- 2023-06-02 Python利用CNN實現對時序數據進行分類_python
- 2022-10-11 主從同步中斷(sql_thread)問題一例
- 2022-04-06 python數據分析實戰指南之異常值處理_python
- 2022-07-16 Linux查看日志的幾種方式
- 2022-11-14 Django?ORM?事務和查詢優化的操作方法_python
- 2022-11-05 Android?Jetpack組件中LifeCycle作用詳細介紹_Android
- 2022-10-04 goland把go項目打包進docker鏡像的全過程記錄_Golang
- 2022-10-22 SQLMAP插件tamper模塊簡介_MsSql
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支