4-4 Mongodb版本升级
最后更新于:2022-04-02 07:39:52
### **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://docs.gechiui.com/gc-content/uploads/sites/kancloud/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>
更新完成,执行的维护操作一定是在业务低峰期执行,以免影响到业务。
集群升级稍后更新!
';