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

最近为了长远考虑想把项目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下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是 MongoDB 6.0 版本配置主从的详细安装步骤: 1. 安装 MongoDB:可以从官网下载 MongoDB 6.0 的安装包并进行安装,或者使用相应的包管理工具进行安装。 2. 配置主节点:在主节点的 MongoDB 配置文件(默认路径为 /etc/mongod.conf)中添加以下配置: ``` replication: replSetName: <replica_set_name> ``` 其中,`<replica_set_name>` 是复制集的名称。 3. 启动主节点:执行以下命令启动 MongoDB: ``` sudo service mongod start ``` 4. 初始化复制集:连接到主节点的 MongoDB shell 中,并执行以下命令: ``` rs.initiate() ``` 此时,主节点已经启动了复制集,并成为其中的唯一成员。 5. 配置从节点:在从节点的 MongoDB 配置文件中添加以下配置: ``` replication: replSetName: <replica_set_name> ``` 6. 启动从节点:执行以下命令启动 MongoDB: ``` sudo service mongod start ``` 7. 将从节点添加到复制集中:在主节点的 MongoDB shell 中执行以下命令: ``` rs.add("<hostname>:<port>") ``` 其中,`<hostname>` 和 `<port>` 分别是从节点的主机名和端口号。 8. 等待从节点与主节点同步完成:可以使用 `rs.status()` 命令来查看复制集的状态,确认从节点已经完成同步。 现在,你已经成功配置了 MongoDB 6.0 版本的主从复制。可以在主节点上进行写入操作,在从节点上进行读取操作,当主节点发生故障时,从节点会自动选举一个新的主节点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值