记录 MongoDB集群 3.4升级至3.6
Why?
由于业务扩大,部分业务开始有了独立部署集群的需求,需要秦阿姨数据到新集群,同时为将生产影响降到最低,需要支持实时迁移,利用mongo在3.6版本提供的Change Stream特性可实现该功能,新版本在安全性,功能性及性能上有巨大提升,遂拟定升级mongo集群至3.6版本。
How?
不停机升级可以按照cfg->shard->mongos 来逐个升级服务版本,由于采用的是三副本模式,故不会影响正常使用。
具体流程如下:
1.关闭集群blance
sh.stopBalancer()
2.修改用户 PATH,指定mongod 为新版本路径,切记需要新开bash或者应用bash_profile使配置生效
[admin@localhost ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/home/admin/mongodb_x64_3.4.17/bin
export PATH
3.依次关闭服务并使用3.6版本启动服务,主节点需先 执行
mongod > rs.stepDown()
待从节点切换为主节点后再执行shutdown 关闭
4.所有节点替换完软件版本后,最好检查一下集群状态及软件版本,一旦有节点版本不一致,会因集群节点通信问题导致节点不可用
5.在任一mongos节点,修改集群FCV后,重启所有mongos
mongos> db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
检查状态无误,确认升级完成。
问题总结
如存在节点报错日志如下,则说明在修改FCV值,集群节点版本存在不一致的情况,重新替换正确版本即可。
Server min and max wire version are incompatible (6,6) with client mi
n wire version (0,5)
mongo服务关闭一定要通过shutdown命令,若直接使用kill,在启动时有概率会出现如下报错
[initandlisten] WiredTiger error (-31802) [1565933984:78859][31235:0
x7f4ace0cad00], 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