助力软件开发企业降本增效 PHP / java源码系统,只需一次付费,代码终身使用! 广告
### **MongoDB版本控制** ### **1、稳定版本。** MongoDB的版本的形式X.Y.Z在那里X.Y 指的是一个版本系列或开发系列Z 指修订/补丁号。 如果Y是偶数,则X.Y指发布系列;例如, 4.0发行系列和4.2发行系列。发布系列 稳定且适合生产。 如果Y是奇数,则X.Y指一个开发系列;例如, 4.1开发系列和4.3开发系列。开发系列仅用于测试而不是生产。 例如,在MongoDB版本中4.0.12,4.0指的是发行系列,而.12指的是修订版。 **最新产品** 在发布一系列变化(例如4.0到4.2)通常标志着引进可能破坏向后兼容的新功能。 **补丁版本** 更改版本号(如4.0.11对4.0.12)一般标注错误修复和向后兼容的改变的释放。 **驱动程序版本** MongoDB的版本编号系统与MongoDB驱动程序使用的系统不同 ### 2、 **MongoDB版本升级** (版本号偶数为稳定版本例如:3.2、3.4) ![](https://img.kancloud.cn/eb/43/eb43f51f443c1d787ed2d19acec6f5e7_1720x968.jpg) ### **3、升级单实例** 单实节点:仅推荐本地环境使用 >1、确认数据文件版本 2、安装新版本 3、替换老版本 4、更新数据文件版本 **二进制版本3.6.9升级4.0** 3.1、确认数据文件版本: ``` [root@10-1-1-77 data]# ps -ef | grep mongodb_new mongod 22494 1 0 15:21 ? 00:00:01 /data/mongodb3.6.9/bin/mongod -f /data/new/conf/mongodb_new.conf root 22543 22331 0 15:23 pts/0 00:00:00 grep --color=auto mongodb_new ``` 首先我们先确定兼容性版本是否是3.6 ``` [root@10-1-1-77 ~]# /data/mongodb3.6.9/bin/mongo 10.1.1.77:27030 > db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) { "featureCompatibilityVersion" : { "version" : "3.6" }, "ok" : 1 } > ``` 3.2、安装新版本: 我这里系统使用的是centos7 ``` [root@10-1-1-77 data]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.16.tgz [root@10-1-1-77 data]# tar -zxvf /root/mongodb-linux-x86_64-rhel70-4.0.16.tgz -C . [root@10-1-1-77 data]# ll lrwxrwxrwx 1 mongod mongod 33 3月 11 12:00 mongodb3.6.9 -> mongodb-linux-x86_64-rhel70-3.6.9 drwxr-xr-x 3 mongod mongod 100 3月 11 12:00 mongodb-linux-x86_64-rhel70-3.6.9 drwxr-xr-x 3 root root 135 3月 14 15:03 mongodb-linux-x86_64-rhel70-4.0.16 ``` 创建软连接 ``` [root@10-1-1-77 data]# ln -s mongodb-linux-x86_64-rhel70-4.0.16 mongodb4.0.16 [root@10-1-1-77 data]# ll lrwxrwxrwx 1 mongod mongod 33 3月 11 12:00 mongodb3.6.9 -> mongodb-linux-x86_64-rhel70-3.6.9 lrwxrwxrwx 1 root root 34 3月 14 15:06 mongodb4.0.16 -> mongodb-linux-x86_64-rhel70-4.0.16 ``` 3.3、替换老版本 ``` [root@10-1-1-77 data]# kill 22494; sudo -u mongod /data/mongodb4.0.16/bin/mongod -f /data/new/conf/mongodb_new.conf about to fork child process, waiting until server is ready for connections. forked process: 41146 child process started successfully, parent exiting [root@10-1-1-77 data]# ps -ef | grep mongo mongod 41146 1 5 15:12 ? 00:00:01 /data/mongodb4.0.16/bin/mongod -f /data/new/conf/mongodb_new.conf ``` 3.4、更新新版本数据文件: ``` [root@10-1-1-77 data]# /data/mongodb4.0.16/bin/mongo 10.1.1.77:27030 MongoDB shell version v4.0.16 connecting to: mongodb://10.1.1.77:27030/test?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("f00c5de1-0845-4d3f-82f8-ac9b6a92f580") } MongoDB server version: 4.0.16 Server has startup warnings: 2020-03-14T15:12:27.503+0800 I CONTROL [initandlisten] 2020-03-14T15:12:27.503+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. > db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) { "featureCompatibilityVersion" : { "version" : "3.6" }, "ok" : 1 } #查看兼容性版本 > db.adminCommand( { setFeatureCompatibilityVersion: "4.0" } ) #修改兼容性版本 { "ok" : 1 } > db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) { "featureCompatibilityVersion" : { "version" : "4.0" }, "ok" : 1 } > ``` 升级完! ### **4. 升级复制集集群** (4.0.16升级4.2.1,其他版本升级步骤也是一样的) #### 4.1、确认数据版本 ``` rs02:SECONDARY> db.getMongo().setSlaveOk() rs02:SECONDARY> db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) { "featureCompatibilityVersion" : { "version" : "4.0" }, "ok" : 1, "operationTime" : Timestamp(1584521284, 1), "$clusterTime" : { "clusterTime" : Timestamp(1584521284, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } } ``` ### 4.2、下载解压 下载以后上传到三台服务器, 三台服务器分别执行 >tar -zxvf mongodb-linux-x86_64-rhel70-4.2.2.tgz ln -s mongodb-linux-x86_64-rhel70-4.2.2 mongodb-4.2.2 #### 4.2.1、我们先在SECONDARY执行 杀掉4.0版本启动的mongod进程,使用新版本启动。 >[root@10-1-1-159 ~]# sudo -u mongod /data/mongodb-4.2.2/bin/mongod -f /data/mongodb/conf/mongodb.conf about to fork child process, waiting until server is ready for connections. forked process: 28761 child process started successfully, parent exiting [root@10-1-1-159 ~]# #### 4.2.3、我们在PRIMARY节点进行 使用并使用rs.stepDown()命令让主节点降级,集群会选举出新的节点作为主节点。 ``` [root@10-1-1-77 ~]# sudo -u mongod /data/mongodb-4.0.16/bin/mongo 10.1.1.77:27010 MongoDB shell version v4.0.16 connecting to: mongodb://10.1.1.77:27010/test?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("8d32e19a-d9ca-4947-a767-772444f7d627") } MongoDB server version: 4.0.16 Welcome to the MongoDB shell. rs02:PRIMARY> rs.stepDown() rs02:SECONDARY> rs02:SECONDARY> exit >[root@10-1-1-77 ~]# ps -ef | grep mongo mongod 13719 1 0 3月18 ? 00:06:04 /data/mongodb-4.0.16/bin/mongod -f /data/mongodb/conf/mongodb.conf [root@10-1-1-77 ~]# kill 13719 [root@10-1-1-77 ~]# sudo -u mongod /data/mongodb-4.2.2/bin/mongod -f /data/mongodb/conf/mongodb.conf about to fork child process, waiting until server is ready for connections. forked process: 38434 child process started successfully, parent exiting 4.2.4、在仲裁节点执行 kill掉进程,用新的版本启动 [root@10-1-1-178 ~]# sudo -u mongod /data/mongodb-4.2.2/bin/mongod -f /data/mongodb/conf/mongodb.conf about to fork child process, waiting until server is ready for connections. forked process: 36193 child process started successfully, parent exiting #### 4.3、更新数据文件版本: [root@10-1-1-77 ~]# sudo -u mongod /data/mongodb-4.0.16/bin/mongo 10.1.1.159:27010 MongoDB shell version v4.0.16 connecting to: mongodb://10.1.1.159:27010/test?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("ee437b54-d94f-48ff-9424-d3fca6fcf17c") } MongoDB server version: 4.2.2 WARNING: shell and server versions do not match Welcome to the MongoDB shell. rs02:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "4.2" } ) { "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1584589382, 7), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } }, "operationTime" : Timestamp(1584589382, 7) } rs02:PRIMARY> db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) { "featureCompatibilityVersion" : { "version" : "4.2" #查看数据版本更新完成 }, "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1584589415, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } }, "operationTime" : Timestamp(1584589415, 1) } rs02:PRIMARY> 更新完成,执行的维护操作一定是在业务低峰期执行,以免影响到业务。 集群升级稍后更新!