1 MongoDB 升级说明
在之前的博客中我们了解了MongoDB的版本发布规则。
MongoDB 从5.0 开始 版本 命名规则发生改变
https://www.cndba.cn/dave/article/107951
在不同的版本中,都会删除、添加一些命令、方法、参数。 这个在每个版本的Release notes
中有详细的说明。
有时,我们为了解决某些bug,或者想利用新版本的某些特性,那么就需要升级MongoDB的版本。
在MongoDB 5.0 之前,版本号由3个数字位组成:X.Y.Z。
- X.Y是 发行版本序列号 或者 开发版本序列号;
- Z是补丁号 或者 修订号。
因此,我们对MongoDB的升级也就涉及2个级别:
- 大版本号的升级
就是升级X.Y。 MongoDB 不支持跨大版本的升级。 比如从3.6 升级到4.4 是不允许的,必须一级一级升级:3.6 4.0 4.2 4.4。 对于大版本的升级,除了MongoDB 软件之外,还需要注意检查Driver 的兼容性。 - 小版本升级
就是升级Z 的序列号。 这个直接停止实例,替换mongod 文件即可。
因为从v4.4 开始,MongoDB tools和mongosh 都是需要独立部署的,所以只需要替换mongo,mongod,mongos 三个文件即可。
MongoDB 4.4 以后版本安装Database Tools 工具
https://www.cndba.cn/dave/article/107952MongoDB Shell (mongosh) 工具说明
https://www.cndba.cn/dave/article/107986
2 升级操作示例
我们这里演示从4.4.13 升级到4.4.14。因为我们这里的环境是Sharded Cluster,所以需要在每个shard 节点逐步进行替换。
2.1 secondary 节点执行
2.1.1 下载新文件
从官网下载最新的tar 文件,并解压缩:
[dave@www.cndba.cn_3 bin]# pwd
/data/mongodb-linux-x86_64-rhel70-4.4.14/bin
[dave@www.cndba.cn_3 bin]# ll
total 197708
-rwxr-xr-x 1 root root 15205 May 4 22:09 install_compass
-rwxr-xr-x 1 root root 53690928 May 4 22:21 mongo
-rwxr-xr-x 1 root root 83353608 May 4 22:40 mongod
-rwxr-xr-x 1 root root 65380944 May 4 22:40 mongos
[dave@www.cndba.cn_3 bin]#
2.1.2 关闭mongo 实例
这里必须正常关闭mongo 示例:
use admin
db.shutdownServer()
如果节点上有多个shard,每个shard 都要正常关闭,因为我们这里使用supervisor 管理的,直接使用supervisorctl 命令关闭。
Linux 进程管理工具 supervisor
https://www.cndba.cn/dave/article/107973
[dave@www.cndba.cn_3 bin]# supervisorctl stop all
shard2: stopped
shard3: stopped
configdb: stopped
shard1: stopped
[dave@www.cndba.cn_3 bin]#
[dave@www.cndba.cn_3 bin]# supervisorctl status all
configdb STOPPED May 11 02:06 PM
mongos STOPPED May 11 02:06 PM
shard1 STOPPED May 11 02:06 PM
shard2 STOPPED May 11 02:06 PM
shard3 STOPPED May 11 02:06 PM
[dave@www.cndba.cn_3 bin]#
2.1.3 更新文件
删除旧文件:
[dave@www.cndba.cn_3 bin]# pwd
/usr/local/mongodb/bin
[dave@www.cndba.cn_3 bin]# ll
total 325212
-rwxr-xr-x 1 root root 13997360 Apr 30 11:31 bsondump
-rwxr-xr-x 1 root root 15205 Mar 2 23:24 install_compass
-rwxr-xr-x 1 root root 53691040 Mar 2 23:35 mongo
-rwxr-xr-x 1 root root 83347720 Mar 2 23:55 mongod
-rwxr-xr-x 1 root root 16769896 Apr 30 11:31 mongodump
-rwxr-xr-x 1 root root 16425456 Apr 30 11:31 mongoexport
-rwxr-xr-x 1 root root 17310776 Apr 30 11:31 mongofiles
-rwxr-xr-x 1 root root 16701752 Apr 30 11:31 mongoimport
-rwxr-xr-x 1 root root 17151264 Apr 30 11:31 mongorestore
-rwxr-xr-x 1 root root 65380248 Mar 2 23:44 mongos
-rwxr-xr-x 1 root root 16268112 Apr 30 11:31 mongostat
-rwxr-xr-x 1 root root 15931944 Apr 30 11:31 mongotop
[dave@www.cndba.cn_3 bin]# rm -rf install_compass mongo mongod mongos
复制新文件:
[dave@www.cndba.cn_3 bin]# pwd
/data/mongodb-linux-x86_64-rhel70-4.4.14/bin
[dave@www.cndba.cn_3 bin]# ls
install_compass mongo mongod mongos
[dave@www.cndba.cn_3 bin]# cp * /usr/local/mongodb/bin/
[dave@www.cndba.cn_3 bin]#
验证:
[dave@www.cndba.cn_3 bin]# ll
total 325224
-rwxr-xr-x 1 root root 13997360 Apr 30 11:31 bsondump
-rwxr-xr-x 1 root root 15205 May 11 14:10 install_compass
-rwxr-xr-x 1 root root 53690928 May 11 14:10 mongo
-rwxr-xr-x 1 root root 83353608 May 11 14:10 mongod
-rwxr-xr-x 1 root root 16769896 Apr 30 11:31 mongodump
-rwxr-xr-x 1 root root 16425456 Apr 30 11:31 mongoexport
-rwxr-xr-x 1 root root 17310776 Apr 30 11:31 mongofiles
-rwxr-xr-x 1 root root 16701752 Apr 30 11:31 mongoimport
-rwxr-xr-x 1 root root 17151264 Apr 30 11:31 mongorestore
-rwxr-xr-x 1 root root 65380944 May 11 14:10 mongos
-rwxr-xr-x 1 root root 16268112 Apr 30 11:31 mongostat
-rwxr-xr-x 1 root root 15931944 Apr 30 11:31 mongotop
[dave@www.cndba.cn_3 bin]#
启动节点上的实例:
[dave@www.cndba.cn_3 bin]# supervisorctl start all
shard2: started
shard3: started
shard1: started
configdb: started
mongos: started
[dave@www.cndba.cn_3 bin]# supervisorctl status all
configdb RUNNING pid 5505, uptime 0:01:12
mongos RUNNING pid 5506, uptime 0:01:12
shard1 RUNNING pid 5504, uptime 0:01:12
shard2 RUNNING pid 5502, uptime 0:01:12
shard3 RUNNING pid 5503, uptime 0:01:12
[dave@www.cndba.cn_3 bin]#
查看版本:
[dave@www.cndba.cn_3 bin]# mongo_conn 27018
MongoDB shell version v4.4.14
shard1:SECONDARY> db.version()
4.4.14
shard1:SECONDARY>
2.2 primary 节点执行
主节点操作和从节点操作是一样的,如果不考虑对业务的影响,可以直接停机进行更新。 替换时间也很短,如果为了避免停机的影响,可以先对primary 节点进行降级,变成从节点后在进行操作。
MongoDB 4.4 副本集 维护步骤 说明
https://www.cndba.cn/dave/article/107981
[dave@www.cndba.cn_2 ~]# mongo_conn 27018
MongoDB shell version v4.4.13
shard1:PRIMARY> rs.stepDown(300)
然后进行停机维护,操作同步同上节。
版权声明:本文为博主原创文章,未经博主允许不得转载。