记录 MongoDB集群 3.4升级至3.6

Posted 我的DBA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录 MongoDB集群 3.4升级至3.6相关的知识,希望对你有一定的参考价值。


Why?

由于业务扩大,部分业务开始有了独立部署集群的需求,需要秦阿姨数据到新集群,同时为将生产影响降到最低,需要支持实时迁移,利用mongo在3.6版本提供的Change Stream特性可实现该功能,新版本在安全性,功能性及性能上有巨大提升,遂拟定升级mongo集群至3.6版本。


How?

不停机升级可以按照cfg->shard->mongos 来逐个升级服务版本,由于采用的是三副本模式,故不会影响正常使用。

具体流程如下:

1.关闭集群blance

mongos> sh.stopBalancer()

2.修改用户 PATH,指定mongod 为新版本路径,切记需要新开bash或者应用bash_profile使配置生效

[admin@localhost ~]$ cat .bash_profile # .bash_profile
# Get the aliases and functionsif [ -f ~/.bashrc ]; then . ~/.bashrcfi
# User specific environment and startup programsPATH=$PATH:$HOME/.local/bin:$HOME/bin:/home/admin/mongodb_x64_3.4.17/binexport PATH

3.依次关闭服务并使用3.6版本启动服务,主节点需先 执行 

mongod > rs.stepDown()

待从节点切换为主节点后再执行shutdown 关闭

4.所有节点替换完软件版本后,最好检查一下集群状态及软件版本,一旦有节点版本不一致,会因集群节点通信问题导致节点不可用

5.在任一mongos节点,修改集群FCV后,重启所有mongos

mongosdb.adminCommand( { setFeatureCompatibilityVersion"3.6" } )

检查状态无误,确认升级完成。


问题总结

  1. 如存在节点报错日志如下,则说明在修改FCV值,集群节点版本存在不一致的情况,重新替换正确版本即可。

    Server min and max wire version are incompatible (6,6) with client min wire version (0,5)
  2. mongo服务关闭一定要通过shutdown命令,若直接使用kill,在启动时有概率会出现如下报错

    [initandlisten] WiredTiger error (-31802) [1565933984:78859][31235:0x7f4ace0cad00], txn-recover: unsupported WiredTiger file version: this build  only supports major/minor versions up to 1/0,  and the file is version 2/0: WT_ERROR: non-specific WiredTiger error

    此时删除数据目录下 lock文件,重新启动即可

    cd /data/db //进入数据文件夹rm -r journal rm -r mongod.lock rm -r WiredTiger.lock



以上是关于记录 MongoDB集群 3.4升级至3.6的主要内容,如果未能解决你的问题,请参考以下文章

将 mongodb 版本升级到 3.6 时聚合失败

mongodb2.2.0升级到3.4.10操作记录

C#版的mongodb最新的官方驱动2.4.0版本

MongoDB疑难解析:为什么升级之后负载升高了?

MongoDB疑难解析:为什么升级之后负载升高了?

MongoDB升级4.0后,这个异常坑了多少人?