资讯专栏INFORMATION COLUMN

Mongodb升级方案概述

IT那活儿 / 835人阅读
Mongodb升级方案概述

Mongodb现在最新已经发布到4.4.5版,在日常运维工作中,时常有数据库升级的需求,相对于其他数据库产品来说,Mongodb的版本升级相对简单,所以本文对mongodb的升级进行简单介绍,以及介绍一下之前升级过程中碰到的问题总结。

与所有数据库产品一样,有逻辑迁移升级和物理升级两种方式。


一.  逻辑迁移升级

提前搭建新版本数据库,然后mongodump/mongorestore进行逻辑迁移。使用此方案的优点是可以跨多个版本进行迁移升级,缺点是数据迁移速度慢。


二. 物理升级

由于Mongodb基本没有数据字典的概念,所以物理升级的优势就是速度快,影响业务时间短,但是有个明显的缺点就是无法跨多个大版本进行升级,Mongodb发行至今有2.6、3.2、3.4、3.6、4.0、4.2、4.4等大版本,比如说从3.2是不能直接升级到3.6的,必须先从3.2升级到3.4,再升级到3.6。

不管数据库是什么架构,若允许停库进行升级,则直接用新版本的软件,读取旧版本的数据库文件(--dbpath),重新启动即可。如果是复制集或者分片集群架构,则可利用复制集可以在线进行备机初始化的特性,进行滚动升级。滚动升级具有如下优势:

  • 用新版本软件新加从节点或者删除原有从节点进行重新初始化,然后主从切换,此方案对业务基本无影响,只有几秒钟的切换时间。

  • 滚动升级多了一层数据保护,若升级异常,可快速回退。避免了升级异常导致业务异常或者数据丢失等问题。

从低版本升级到3.4以上版本时,在升级完成后,需要修改数据库兼容性参数,低于3.4以下版本,则无需修改,方法如下:

db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) ;
db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } );
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) ;


对于分片集群来说,由于每一个片和config都是一个复制集,所以可以同样可以采用复制集滚动升级的方式实现,并且mongos也可以滚动替换,业务基本无感知。但对于分片集群的升级,有一下情况需要注意:

  1. 停止业务侧的元数据变更

  2. 禁止分片集群的balancer操作,及停止在不同的分片间移动chunk。

    sh.stopBalancer()

    sh.getBalancerState()

    升级完成后,启用分片balancer。sh.setBalancerState(true)

  3. 备份config数据库

  4. 修改兼容性参数只能从mongos上修改


另外升级过程中,需要注意以下问题:

  1. 如果由3.4升级到3.6 ,可能存在部分实例没有配置bind_ip参数,因为3.6以前版本默认监听所有IP,3.6及以后默认只监听127.0.0.1 需要修改监听IP

    bind_iP=localhost,IP

  2. 升级到3.6以后,PSA架构需要添加参数enableMajorityReadConcern=false



往期推荐



以文本形式将MySql数据迁移Mongodb的方法

Mongodb性能优化之慢查询+语句执行计划

Mongodb聚合查询及在日常运维中的使用

Mongodb增量备份和基于时间点恢复

Mongodb日常性能问题处理案例分享

常用Mongodb安装配置规范建议


END


更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129937.html

相关文章

  • 创建一个360°视图 第一部分:概述&数据分析

    摘要:第一部分包括一个视图示例以及在构建视图时需要考虑的要点概述,第二部分将介绍一个示例数据模型的实现,第三部分将深入探讨如何将数据迁移到的机制。让我们假设你已经有创建一个视图的想法了。 本文源地址:http://www.mongoing.com/archives/884 本系列的三篇博客将会提供一个关于在MongoDB上构建360°视图的介绍。第一部分包括一个360°视图示例以及在构建...

    joywek 评论0 收藏0
  • 创建一个360°视图 第一部分:概述&数据分析

    摘要:第一部分包括一个视图示例以及在构建视图时需要考虑的要点概述,第二部分将介绍一个示例数据模型的实现,第三部分将深入探讨如何将数据迁移到的机制。让我们假设你已经有创建一个视图的想法了。 本文源地址:http://www.mongoing.com/archives/884 本系列的三篇博客将会提供一个关于在MongoDB上构建360°视图的介绍。第一部分包括一个360°视图示例以及在构建...

    winterdawn 评论0 收藏0
  • 管理和监控MySQL和MongoDB性能的开源平台Percona

    摘要:监控和管理概述监控和管理是一个用于管理和监控和性能的开源平台。是收集性能指标的。删除数据容器升级服务器先停再删,如果如要保留收集数据,不要执行此操作在和上安装客户端客户端是安装在您要监视的或主机上的一组代理和出口商。 Percona监控和管理概述 Percona监控和管理(PMM)是一个用于管理和监控MySQL和MongoDB性能的开源平台。 它由Percona与托管数据库服务,支持和...

    EasonTyler 评论0 收藏0
  • (翻译) MongoDB(12) 在 Amazon Linux 上安装MongoDB社区版

    摘要:概述使用这个教程在使用软件包安装社区版本安装教程仅支持位操作系统详细信息请参阅平台支持软件包在自己的存储库中提供官方支持软件包此存储库包含以下软件包软件名简介一个元软件包将自动安装下面列出的四个组件包包含守护程序和关联配置和初始化脚本 概述 使用这个教程在 Amazon Linux 使用 .rpm 软件包安装 MongoDB 社区版. 本安装教程仅支持64位操作系统. 详细信息请参阅平...

    gself 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<