vlambda博客
学习文章列表

记录 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