MongoDB从4.0.23至5.0.19升级经历
引子:为了解决MongoDB的两个漏洞决定把MongoDB升级至最新版本,期间也踩了不少坑,在这里分享出来供大家学习与避坑~
1、MongoDB的两个漏洞
漏洞1:MongoDB Server 安全漏洞(CVE-2021-20330)
漏洞2:MongoDB Server 安全漏洞(CVE-2021-32036)
我们生产环境使用的是4.0.23
版本,正好是漏洞版本~官方虽然已经发布了补丁链接,但是还是看不懂里面的内容,不知道怎么修复。并且从ChatGPT
得知升级版本是最好的解决办法。于是决定把MongoDB升级到最新版本。
2、MongoDB数据备份
数据的备份与还原是必须的,版本升级后需要把历史数据还原到新版本中。然而我们只是把MongoDB作为文件存储服务,并没有存储核心的业务数据,只涉及到一个数据库和3个集合,因此备份与还原用mongoexport
和mongoimport
命令就好了,例如
cd bin
# 备份集合 fileList 的数据(存储自定义的文件元信息)
./mongoexport --host 21.48.141.63:27017 -u file -p ah@123$ -d file -c fileList -o ../back/fileList.json
# 备份集合 fs.files 的数据(GridFS存储的meta数据)
./mongoexport --host 21.48.141.63:27017 -u file -p ah@123$ -d file -c fs.files -o ../back/fs.files.json
# 备份集合 fs.chunks 的数据(GridFS存储的二进制数据)
./mongoexport --host 21.48.141.63:27017 -u file -p ah@123$ -d file -c fs.chunks -o ../back/fs.chunks.json
# 命令参数说明
# -h 或者是 --host 指定MongoDB服务的ip和端口
# -u 指定认证的用户名
# -p 指定认证的密码
# -d 指定数据库
# -c 指定集合
# -o 指定导出的文件名和路径
备份好后,可以移动到指定的目录。然后直接把4.0.23
版本全部删掉。
mv back/ ../
rm -rf mongodb
3、MongoDB-5.0.19下载与安装
直接从官方文档下载合适的版本即可,不一定是5.0.19版本的~
# 例如下载地址
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.19.tgz
上传到服务器后解压
tar -zxvf mongodb-linux-x86_64-rhel70-5.0.19.tgz
mv mongodb-linux-x86_64-rhel70-5.0.19 mongodb