资讯专栏INFORMATION COLUMN

从MongoDB2.4升级到3.0的详细步骤

whatsns / 3189人阅读

摘要:于是就有了这次的版本升级任务。如果返回的值小于,那么则需要用在库里具有权限的用户连上的库然后执行用户认证格式转换。参考文档及软件下载链接升级官方指南升级官方指南警告的解决方案下载下载

最近为了长远考虑想把项目MongoDB里存放的400多万数据迁移到云服务厂商提供的MongoDB服务上,省去自己去维护的时间,但是看了下云服务对MongoDB数据迁移上云的要求是自建MongoDB数据库的最低版本为3.0。 公司服务器上的MongoDB是当时用yum安装的,版本还是2.4。于是就有了这次MongoDB的版本升级任务。好了闲话少说直接进入正题部分。

首先阐明,本文描述的升级只针对单点部署或者是master-slave部署的MongDB的版本升级,不过文中引用的官方文档中有关于复制集或者分片MongoDB的版本升级指南,可以查阅后按照步骤操作。

2.4版本升级到3.0的话由于数据兼容性的问题,需要先升级到2.6版本,再升级至3.0

升级前先来说个老生常谈的原则:版本升级一定要在测试环境成功测试后再在production机器上进行版本升级。

步骤:
一、2.4升级到2.6

1、下载2.6版本的MongoDB程序包并解压

curl https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.11.tgz -o ./mongodb-2.6.tgz
tar -xzvf mongodb-2.6.tgz    

2、用2.6版本的mongo shell 连接2.4版本的mongos 然后运行升级检查

mongo —-host db.yourdomain.com:27017 admin -u yourname -p your pass
use admin
db.upgradeCheckAllDBs()

如果mongo服务需要启用用户验证那么在升级到2.6版本之前要确保admin库里至少有一个权限为userAdminAnyDatabase的用户存在

use admin
db.addUser({user: "root", pwd: "xxxxd", roles: ["userAdminAnyDatabase"]})

3.将2.4版本mongo的二进制文件替换成刚才下载的程序包里的bin目录里的二进制文件

sudo service mongod stop
sudo chown -R root:root yourmongo2.6dir/bin 
//把mongodb用到的二进制文件换成2.6版本的二进制文件然后再启动mongod 
sudo service mongod start

二、2.6升级到3.0
1、下载3.0的程序包

curl https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.9.tgz -o ./mongodb-3.0

2、升级mongodb的用户数据格式
2.6升级到3.0前需要验证现有的用户schema, 在3.0中MongoDB完全弃用了之前的用户授权验证模式,所以在升级3.0前需要把2.6的用户schema升级到兼容3.0的格式。

use admin
db.system.version.find( { _id: "authSchema" })

如果返回的值小于3,那么则需要用在admin库里具有userAdminAnyDatabase权限的用户连上mongo的admin库然后执行用户认证格式转换。

db.getSiblingDB("admin").runCommand({authSchemaUpgrade: 1 });

3、停掉mongod 将2.6版本mongo的二进制文件替换成下载的3.0程序包里的bin目录里的二进制文件,然后重新启动mongod。

大功告成,用mongo连接上数据库进入mongo shell后就会发现命令提示出当前版本是3.0,不过升级到3.0进入mongo shell后会有WARNING提示当前服务器的THP(Transparent Huge Pages)是打开的,系统启用这个策略会影响MongoDB的性能,在StackOverflow上发现了一个比较好的解决方案,稍后会给出链接。

好了,这就是我在本次MongoDB升级中执行的所有步骤,说简单也不简单,说难也不难,主要是设计的参考文档比较多,这里记录下升级步骤即是希望帮助有升级需要的同仁能少走弯路也是方便自己备查。

参考文档及软件下载链接:

升级2.6MongoDB官方指南
升级3.0MongoDB官方指南
THP警告的解决方案
MongoDB2.6下载
MongoDB3.0下载

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

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

相关文章

  • (翻译) MongoDB(11) 在 SUSE 上安装MongoDB社区版

    摘要:概述使用这个教程在和使用软件包安装社区版虽然发行版包含自己的软件包官方的社区版包通常是最新的平台支持本安装教程仅支持位操作系统详细信息请参阅平台支持软件包在自己的存储库中提供官方支持软件包此存储库包含以下软件包软件名简介一个元软件包将自动 概述 使用这个教程在 SUSE Linux 11 和 12 使用 .rpm 软件包安装 MongoDB 社区版. 虽然 SUSE 发行版包含自己的 ...

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

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

    gself 评论0 收藏0
  • windows绝对纯净版安装 非Ghost 详细教程!

    摘要:自启动盘制作工具百度网盘下载链接密码下载驱动精灵万能网卡版到驱动精灵官网,下载驱动精灵万能网卡版,用来应对某些电脑系统安装后网卡驱动没适配上导致不能联网的问题。本教程采用的系统镜像不附带驱动程序,需要另行安装,用驱动精灵是个省事的选择。 本教程采用的windows安装方式不是Ghost,而是使用windows原版镜像进行安装,步骤较为繁琐但是绝对纯净!无捆绑无病毒,纯净到装好进去桌面只...

    youkede 评论0 收藏0
  • Linux(CentOS)软件管理(1)- RPM包管理

    摘要:但实际安装的还是源码包和二进制包。而且要注意路径。包名操作已经安装的软件包时,使用包名。实际上是搜索中的数据库。 软件包管理简介 1. 软件包分类 源码包 二进制包(RPM包、系统默认包) 2. 源码包 优点 开源,如果能力足够,可以修改源代码 可以自定义选择所需的功能 软件是编译安装,所以更加适合自己的系统,更加稳定,效率更高 卸载方便,直接删除安装目录即可,不会有任何残留 ...

    Hegel_Gu 评论0 收藏0
  • Linux(CentOS)软件管理(1)- RPM包管理

    摘要:但实际安装的还是源码包和二进制包。而且要注意路径。包名操作已经安装的软件包时,使用包名。实际上是搜索中的数据库。 软件包管理简介 1. 软件包分类 源码包 二进制包(RPM包、系统默认包) 2. 源码包 优点 开源,如果能力足够,可以修改源代码 可以自定义选择所需的功能 软件是编译安装,所以更加适合自己的系统,更加稳定,效率更高 卸载方便,直接删除安装目录即可,不会有任何残留 ...

    sewerganger 评论0 收藏0

发表评论

0条评论

whatsns

|高级讲师

TA的文章

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