1 升级要求
升级到2.8版本前必须要先升级到2.6版本。一旦升级到2.8,如果想降级,只能降级到2.6.5,不能降到更低。2.8和2.6版本对用户安全性做了很大改进,如果用到需要单独升级和设置。
升级前请熟知Mongodb的系统部署步骤。具体步骤详见《Mongodb同机多实例部署教程》。
升级到2.6版本的过程和本文档描述的内容一样,只不过官方文档中在描述升级到2.6之前,还需要检查一下数据库状态:
即使用2.6的mongo shell连接2.4的mongos,执行 db.upgradeCheckAllDBs()
2 升级准备
1、 备份configserver的数据,以免出现问题需要恢复
2、 如果已经启用balancer,则需要关闭balancer
3 升级过程
3.1 升级mongos
1、 首先启动mongos,升级元数据,即config数据。
在mongos节点上解压mongdb2.8版本,启动mongos,连接configserver,这里主要附带—upgrade选项:
mongos --configdb <configDBstring> --upgrade
一旦完成升级,mongos会自动退出。升级过程中有信息打印,如果旧系统中数据量十分庞大,升级过程会话费数分钟,可以注意打印信息。一旦升级完成,会输入如下信息:
upgrade of config server to v6 successful
Config database is at version v6
附:执行mongos的详细信息如下
2.4升级到 2.6的信息
2.6 升级到 2.8的信息
2、重新启动mongos
完成升级后,重新启动mongos,看是否连接正常。注意:此时,无需附带—update选项。
3、升级其他mongos
如果还有mongos需要升级为2.8版本,需要逐一启动mongos,查看连接configserver是否正常。注意,这些mongos均不要附带—update选项。
3.2 升级mongod(configserver)
1、 关闭所有mongod,包括configserver
mongod --dbpath /var/mongod/data --shutdown
2、 替换成2.8版本,并启动mongod
官方文档特意给出提示:需要首先升级mongos,才能升级mongod。
WARNING
Do not upgrade mongod instancesuntil after you have upgraded all mongos instances.
另外注意替换2.8版本是仅仅替换可运行程序,千万不要把data目录覆盖掉。
4 更改存储引擎
Mongodb从2.8版本开始支持document level lock,但是需要启动mongod时显式指定存储引擎为wiredTiger。需要注意的是,如果使用wiredtiger,以前的数据并不兼容需要使用2.8版本的mongodump出来,然后启动mongod –storageEngine wiredtiger,再restore。具体操作步骤如下:
4.1 启动2.8版本mongod
确保2.8版本的mongod已经启动,默认使用的是MMAPv1存储引擎。
4.2 使用mongodump进行数据导出
mongodump --out <exportDataDestination>
mongodump也可以添加额外参数,请根据对应系统添加。
4.3 创建数据存储目录
注意该目录可以被用户“mongod”进行访问。
4.4 重启mongod同时带上wiredtiger参数
mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>
4.5 导入数据
mongorestore <exportDataDestination>
5 降级
从2.8降级到2.6和升级过程一样。使用mongos –update后的输出信息如下:
有问题请联系我Professor Zhang:zhangtiey@gmail.com