博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从MongoDB2.4升级到3.0的详细步骤
阅读量:5803 次
发布时间:2019-06-18

本文共 1795 字,大约阅读时间需要 5 分钟。

最近为了长远考虑想把项目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.tgztar -xzvf mongodb-2.6.tgz

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

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

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

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

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

sudo service mongod stopsudo 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 admindb.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升级中执行的所有步骤,说简单也不简单,说难也不难,主要是设计的参考文档比较多,这里记录下升级步骤即是希望帮助有升级需要的同仁能少走弯路也是方便自己备查。

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

转载地址:http://surfx.baihongyu.com/

你可能感兴趣的文章
使用Python读Excel数据Insert到MySQL
查看>>
heartbeat搭建高可用NFS
查看>>
uva10200(Prime Time) 卡精度
查看>>
Lombok
查看>>
Yii PHP 框架分析(三)
查看>>
Codeforces 832C - Strange Radiation
查看>>
[BZOJ1396]识别子串
查看>>
linux下使用过的命令总结(未整理完)
查看>>
Android -- 自定义ViewGroup+贝塞尔+属性动画实现仿QQ点赞效果
查看>>
apicloud 如何解决轮播图变形问题
查看>>
两个窗体,登陆成功后进入主窗体
查看>>
前后端 分离及不分离
查看>>
为什么bash中变量复制=两边不能加空格呢?
查看>>
在线api查询网站
查看>>
SQL练习之不反复执行相同的计算
查看>>
(ADO.NET小知识点汇总)看到什么记什么
查看>>
mysql 插入语句
查看>>
字符串递归
查看>>
Python实现对CSV文件的读写功能
查看>>
牛客网:java入门实现遍历目录
查看>>