签到成功

知道了

CNDBA社区CNDBA社区

MongoDB 从5.0 降级 到 4.4 操作手册

2022-06-09 10:06 3124 0 原创 MongoDB
作者: dave

1 MongoDB 降级背景说明


在之前的博客我们介绍了MongoDB的升级操作,如下:http://www.cndba.cn/dave/article/108055

MongoDB 4.4.13 升级到 4.4.14 操作手册
https://www.cndba.cn/dave/article/107989http://www.cndba.cn/dave/article/108055

MongoDB 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个字符的文档。 http://www.cndba.cn/dave/article/108055

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,执行命令:http://www.cndba.cn/dave/article/108055

db.adminCommand({setFeatureCompatibilityVersion: “4.4”})

http://www.cndba.cn/dave/article/108055
http://www.cndba.cn/dave/article/108055

如果是副本集环境,则在Priamry 节点执行该命令。 执行完毕后,需要在所有节点执行如下命令检查命令是否成功:http://www.cndba.cn/dave/article/108055http://www.cndba.cn/dave/article/108055

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 实例。

http://www.cndba.cn/dave/article/108055

2.2.3 Replica-set 环境操作

操作步骤同standalone,先在secondary 节点操作。

所有secondary 节点操作完成以后,降级主库:

rs.stepDown()http://www.cndba.cn/dave/article/108055

然后对原主库操作。

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()

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2261
    原创
  • 3
    翻译
  • 578
    转载
  • 191
    评论
  • 访问:7965663次
  • 积分:4346
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ