1 MongoDB 降级背景说明
在之前的博客我们介绍了MongoDB的升级操作,如下:
MongoDB 4.4.13 升级到 4.4.14 操作手册
https://www.cndba.cn/dave/article/107989MongoDB 4.4.14 升级到 5.0.8 操作手册
https://www.cndba.cn/dave/article/107990
但是因为5.0.8版本教新,后来在测试MongoShake时不支持,所以还是将环境的版本降到4.4。 该版本得生命周期会比较长。
官网的操作手册可以参考:
https://www.mongodb.com/docs/manual/release-notes/5.0-downgrade/
2 降级操作步骤
不同的MongoDB环境操作步骤略有不同,在官方手册里有说明,但大体操作操作都差不多,都是2个步骤。
2.1 先决的准备工作
2.1.1 备份DB
降级操作具备一定的风险,建议操作之前对DB进行备份。
2.1.2 修改默认的 Read 和Write Concerns
MongoDB 5.0 会改变cluster-wide read 和write concerns的默认值,所以在降级之前需要先使用setDefaultRWConcern命令将这2个选项改回4.4 的默认值。
2.1.3 删除文档列中的 . 和 $ 字符
在MongoDB 5.0 中,支持文档的列名包含. 和 $ 字符,在降级之前,需要先删除所有文档列名包含着2个字符的文档。
2.1.4 Slim-format Timezone Data Files 文件处理
MongoDB 5.0 支持slim-format timezone data files, 如果在部署时使用了该选项,那么必须降级到4.4.7 以后的版本,或者回退 timezone data files 到non-slim-format data files.
2.1.5 检查Resharding 状态
如果是sharding 环境,在执行降级操作之前,必须确保resharding 操作成功完成,如果是sharding 环境刚发生了Primary failover,那么必须先执行cleanupReshardCollection命令。在对shard 环境进行降级时,如果有resharding 操作正在进行,那么resharding 操作会被中断。
2.1.6 降级 Feature Compatibility Version (fCV)
连接mongod,执行命令:
db.adminCommand({setFeatureCompatibilityVersion: “4.4”})
如果是副本集环境,则在Priamry 节点执行该命令。 执行完毕后,需要在所有节点执行如下命令检查命令是否成功:
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
如果是Sharding Cluster 环境,则连接到mongos 节点执行该命令,并通过如下命令确保所有节点都执行成功:
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
2.2 降级步骤
2.2.1 下载最新的4.4 的二进制文件
直接从官网下载即可。
2.2.2 Standalone 环境操作
关闭数据库:
db.adminCommand( { shutdown: 1 } )
如果配置文件中有5.0 的特性,删除。
替换二进制文件后,重启mongod 实例。
2.2.3 Replica-set 环境操作
操作步骤同standalone,先在secondary 节点操作。
所有secondary 节点操作完成以后,降级主库:
rs.stepDown()
然后对原主库操作。
2.2.4 Sharded cluster 环境操作
2.2.4.1 禁用Balancer
连接到mongos 实例,执行如下命令:
sh.stopBalancer()
sh.getBalancerState()
2.2.4.2 降级mongos 实例
替换mongos 实例的二进制文件并重启实例。
2.2.4.3 降级shard 实例
每次操作一个shard 环境的降级,操作步骤同副本集的操作。
2.2.4.4 降级config servers 实例
因为config server 也是副本集环境,所以操作步骤同副本集的操作。
2.2.4.5 重新启用Balancer
sh.startBalancer()
版权声明:本文为博主原创文章,未经博主允许不得转载。