参考 > 发行说明 > MongoDB 3.0发行说明 > 将MongoDB升级到3.0
通常,从MongoDB 2.6升级到3.0是二进制兼容的“嵌入式”升级:关闭mongod
实例并用mongod
运行3.0 的实例替换它们。但是,在尝试进行任何升级之前,请熟悉本文档的内容,尤其是升级分片群集的过程。
如果您需要有关升级到3.0的指导,MongoDB将提供咨询 以帮助确保平稳过渡而不会中断您的MongoDB应用程序。
升级时,请考虑以下事项:
要将现有的MongoDB部署升级到3.0,必须运行2.6。如果您正在运行 2.6之前的MongoDB版本,则必须先升级到2.6,然后再升级到3.0。有关从2.4 升级到2.6的过程,请参阅升级到2.6。升级到MongoDB 2.6后,您将无法降级到MongoDB 2.4之前的任何版本。
如果您现有的MongoDB部署已经通过身份验证和授权运行,则您的用户数据模型authSchema
必须至少为版本3。要验证现有的版本
authSchema
,请参阅已删除MongoDB 2.4用户模型。要升级您的
authSchema
版本,请参阅
升级授权数据以获取详细信息。
在升级MongoDB之前,请务必先在临时环境中测试应用程序,然后再将升级部署到生产环境中。
MongoDB 3.0中的某些更改需要手动检查和干预。在开始升级之前,请参阅MongoDB 3.0中的 兼容性更改文档,以确保您的应用程序和部署与MongoDB 3.0兼容。开始升级之前,请解决部署中的不兼容性。
升级到MongoDB 3.0后,您不能降级到低于2.6.8的版本。
如果您升级到3.0并已运行authSchemaUpgrade
,
则不能在不禁用--auth
或还原升级前备份的情况下将其降级到2.6 ,因为它authSchemaUpgrade
会丢弃MONGODB-CR
2.6中使用的凭据。请参阅
升级现有的MONGODB-CR用户以使用SCRAM-SHA-1。
mongod
实例升级到MongoDB 3.0¶以下步骤概述了将独立mongod
版本从2.6 升级
到3.0的过程。从2.4版本升级到3.0,升级到2.6版本,
第一,然后使用以下过程升级为2.6至3.0。
如果从MongoDB apt
,yum
或zypper
存储库安装了MongoDB ,则应使用程序包管理器升级到3.0。按照适用
于您的Linux系统的安装说明进行操作。这将涉及为新版本添加存储库,然后执行实际升级。
否则,您可以手动升级MongoDB:
从MongoDB下载页面下载 3.0系列最新版本的二进制文件 。有关更多信息,请参阅安装MongoDB。
要将独立mongod
实例的存储引擎更改为WiredTiger,请参见将独立实例
更改为WiredTiger。
您可以使用“滚动”升级从MongoDB 2.6升级到3.0,以通过在其他成员可用时分别升级成员来最大程度地减少停机时间:
rs.stepDown()
在mongo
shell中使用它可以降级主数据库并强制将其设置为故障转移。rs.stepDown()
加快故障转移过程,并且比直接关闭主数据库更可取。
当rs.status()
显示主节点已退出并且另一个成员已PRIMARY
进入状态时,请关闭前一个主mongod
节点,然后用3.0二进制文件替换二进制文件并启动新实例。
副本集故障转移不是即时的,并且在故障转移过程完成之前,副本集将无法接受写入。这可能需要30秒或更长时间:在计划的维护时段内计划升级过程。
要将副本集的存储引擎更改为WiredTiger,请参见将副本集更改为WiredTiger。
如果集群的所有成员当前正在运行2.6实例,则仅将分片集群升级到3.0 。运行2.4的分片群集的唯一受支持的升级路径是通过2.6。升级过程将检查群集的所有组件,如果有任何组件正在运行版本2.4,则会产生警告。
升级过程不需要任何停机时间。但是,在升级分片群集时,请确保客户端不对集合元数据进行更改。例如,在升级过程中,也没有 做任何以下内容:
sh.enableSharding()
sh.shardCollection()
sh.addShard()
db.createCollection()
db.collection.drop()
db.dropDatabase()
可选,但推荐。作为预防措施,在升级分片群集之前,请对config
数据库进行备份
。
mongos
通过configDB
指向群集的配置服务器并使用--upgrade
选项启动一个3.0 实例。
要运行mongos
带有该--upgrade
选项的,您可以将现有mongos
实例升级到3.0,或者如果需要避免重新配置生产mongos
实例,则可以使用mongos
可以访问所有配置服务器的新3.0 。
要升级元数据,请运行:
您可以包括将--logpath
日志消息输出到文件而不是标准输出的选项。还包括启动mongos
集群中的实例所需的任何其他选项
,例如
--sslOnNormalPorts
或
--sslPEMKeyFile
。
3.0 mongos
将输出信息日志消息。
该操作mongos
将在该--upgrade
过程完成后退出
。
升级将防止在升级过程中发生任何块移动或分裂。如果数据文件具有许多分片的集合,或者失败的进程持有过时的锁,则获取所有集合的锁可能需要几秒钟或几分钟的时间。查看日志以获取进度更新。
成功升级所有 mongos
实例后,请升级所有3个mongod
配置服务器实例,并在参数中列出第一个配置服务器,
以进行last last升级。mongos --configdb
一次升级每个分片,mongod
在运行replSetStepDown
和升级每个分片的主数据库之前先升级第二个。
对于MongoDB 3.0中的分片群集,您可以选择更新分片以使用WiredTiger存储引擎,并使配置服务器使用MMAPv1。如果将配置服务器更新为使用WiredTiger,则必须将所有三个配置服务器更新为使用WiredTiger。
要将分片群集更改为使用WiredTiger,请参见将分 片群集更改为WiredTiger。