将 MongoDB 升级到 2.6

在本页面

在一般情况下,从 MongoDB 2.4 升级到 2.6 是二进制兼容的“嵌入式”升级:关闭mongod实例,并用运行 2.6 的mongod实例替换它们。 但是 ,在尝试进行任何升级之前,请熟悉本文档的内容,尤其是升级建议和清单升级分片集群的过程以及运行 2.6 后恢复到 2.4的注意事项。

升级建议和清单

升级时,请考虑以下事项:

Upgrade Requirements

要将现有的 MongoDB 部署升级到 2.6,必须运行 2.4. 如果您正在运行 2.4 之前的 MongoDB 版本,则必须*升级至 2.4,然后再升级至 2.6. 有关从 2.2 升级到 2.4 的过程,请参见将 MongoDB 升级到 2.4

如果您使用MongoDB 云 Management 器备份,请确保您正在至少运行备份代理的版本v20131216.1。备份代理的版本1.4.0紧随v20131216.1

Preparedness

升级之前,在将升级部署到生产环境之前,MongoDB 始终在过渡环境中测试您的应用程序。

要开始升级过程,请将 2.6 mongo shell 连接到您的 MongoDB 2.4 mongosmongod并运行db.upgradeCheckAllDBs()来检查数据集的兼容性。这是初步的自动检查。评估并解决db.upgradeCheckAllDBs()标识的所有问题。

MongoDB 2.6 中的某些更改需要手动检查和干预。有关这些更改的说明,请参见MongoDB 2.6 中的兼容性更改。在 continue 之前,请解决部署中的所有不兼容性。

对于使用身份验证和授权的部署,在升级 MongoDB 二进制文件之前,请确保admin数据库中至少有一个用户的角色为userAdminAnyDatabase **。有关当前使用身份验证和授权的部署,请参阅使用身份验证和授权的部署的注意事项

Authentication

MongoDB 2.6 对授权模型进行了重大更改,这要求更改 MongoDB 存储用户凭据的方式。因此,除了升级 MongoDB 进程以外,如果您的部署使用身份验证和授权,则在将所有 MongoDB 进程升级到 2.6 之后,您还必须升级授权模型。

开始使用认证和授权的部署的升级过程之前:

  • 确保admin数据库中至少存在一个角色为userAdminAnyDatabase的用户。

  • 如果您的应用程序对<database>.system.users集合执行 CRUD 操作或使用类似db.addUser()的方法,那么您必须 mongodmongos实例之前 升级那些驱动程序(即 Client 端库)。

  • 在升级授权模型之前,您必须完全完成所有* MongoDB 进程的升级过程。

在开始将使用身份验证的 MongoDB 部署升级到 2.6 之后,您无法修改现有的用户数据,直到完成授权用户架构升级为止。

有关授权模型的升级过程的完整讨论,请参见将用户授权数据升级到 2.6 格式,其中包括其他要求和过程。

Downgrade Limitations

升级到 MongoDB 2.6 后,您不能**降级到 MongoDB 2.4 之前的任何版本。如果在运行 2.6 时创建了text2dsphere索引,则只能降级到 MongoDB 2.4.10 或更高版本。

Package Upgrades

如果从 MongoDB aptyum存储库安装了 MongoDB,请使用程序包 Management 器升级到 2.6.

对于 Debian,Ubuntu 和相关 os,请键入以下命令:

sudo apt-get update
sudo apt-get install mongodb-org

对于 Red Hat Enterprise,CentOS,Fedora 或 Amazon Linux:

sudo yum install mongodb-org

如果您没有安装mongodb-org软件包,并且安装了 MongoDB 组件的子集,请使用适当的软件包名称替换上面命令中的mongodb-org

请参阅UbuntuRHELDebianSUSEAmazon的安装说明,以获取可用软件包的列表以及完整的 MongoDB 安装说明。

升级 MongoDB 流程

将独立 mongod 实例升级到 MongoDB 2.6

以下步骤概述了将独立的mongod从版本 2.4 升级到 2.6 的过程。要从 2.2 版升级到 2.6,请先升级到版本 2.4 首先,然后按照以下步骤从 2.4 版升级到 2.6.

将副本集升级到 2.6

以下步骤概述了将副本集从 MongoDB 2.4 升级到 MongoDB 2.6 的过程。要从 MongoDB 2.2 升级到 2.6,请先将副本集的所有成员升级到版本 2.4 首先,然后按照以下步骤从 MongoDB 2.4 升级到 2.6.

您可以使用“滚动”升级从 MongoDB 2.4 升级到 2.6,以通过在其他成员可用时分别升级成员来最大程度地减少停机时间:

升级副本集的辅助成员。

通过关闭mongod并将 2.4 二进制文件替换为 2.6 二进制文件,一次升级 set__1 的成员。升级mongod实例后,请 await 成员恢复到SECONDARY状态,然后再升级下一个实例。要检查成员的状态,请在mongo shell 中发出rs.status()

降级主要副本集。

mongoShell 程序中使用rs.stepDown()来降低primary并将其设置为failoverrs.stepDown()加快了故障转移过程,比直接关闭主数据库更可取。

升级主数据库。

rs.status()显示主要数据库已降级,而另一个成员已处于PRIMARY状态时,请关闭先前的主要数据库,并用 2.6 二进制文件替换mongod二进制文件并启动新实例。

副本集故障转移不是即时的,但是将使该集不可用,接受写入操作将一直持续到故障转移过程完成为止。通常,这需要 30 秒或更长时间:在计划的维护时段内计划升级过程。

将分片群集升级到 2.6

如果集群的所有成员当前正在运行 2.4 实例,则仅将分片集群升级到 2.6. 运行 2.2 的分片群集的唯一受支持的升级路径是通过 2.4. 升级过程将检查群集的所有组件,如果有任何组件正在运行版本 2.2,则会产生警告。

Considerations

升级过程不需要任何停机时间。但是,在升级分片群集时,请确保 Client 端不对集合元数据进行更改。例如,在升级期间,请 不要 执行以下任何操作:

升级分片群集

*可选,但建议.*作为预防措施,升级分片群集之前,请备份config数据库。

禁用平衡器。

禁用平衡器中所述,关闭分片群集中的balancer

升级群集的元数据。

使用configDB指向群集的配置服务器并使用--upgrade选项启动单个 2.6 mongos实例。

要使用--upgrade选项运行mongos,可以将现有的mongos实例升级到 2.6,或者,如果需要避免重新配置生产mongos实例,则可以使用可以访问所有配置服务器的新 2.6 mongos

要升级元数据,请运行:

mongos --configdb <configDB string> --upgrade

您可以包括--logpath选项,以将日志消息输出到文件,而不是标准输出。还包括启动群集中的mongos实例所需的任何其他选项,例如--sslOnNormalPorts--sslPEMKeyFile

mongos将在--upgrade流程完成后退出。

升级将防止在升级过程中发生任何块移动或分裂。如果数据文件具有许多分片的集合,或者失败的进程持有过时的锁,则获取所有集合的锁可能需要几秒钟或几分钟的时间。查看日志以获取进度更新。

确保 mongos --upgrade 过程成功完成。

mongos将在元数据升级过程完成后退出。如果成功,该过程将记录以下消息:

upgrade of config server to v5 successful
Config database is at version v5

成功升级后,重新启动mongos实例。如果mongos无法启动,请检查日志以获取更多信息。

如果mongos实例在升级期间失去与配置服务器的连接,或者升级失败,则可以始终安全地重试升级。

将其余的 mongos 实例升级到 v2.6.

无需分片集群中的其他mongos实例,无需--upgrade选项即可升级并重新启动**。升级所有mongos后,请参阅完成分片群集升级以获取有关升级其他群集组件的信息。

完成分片群集升级

成功升级* all * mongos个实例后,您可以升级 MongoDB 部署中的其他实例。

Warning

在升级所有* mongos个实例之前,请勿升级mongod个实例。

在仍然禁用平衡器的情况下,请按以下 Sequences 升级分片群集的组件:

  • 升级所有 3 个mongod配置服务器实例,将* first 系统留在mongos --configdb参数中以升级 last *。

  • 一次升级每个分片,在运行replSetStepDown之前先升级mongod个从属,并升级每个分片的主。

此过程完成后,重新启用平衡器

Upgrade Procedure

升级到 MongoDB 2.6 后,您不能**降级到 MongoDB 2.4 之前的任何版本。如果您具有text2dsphere索引,则只能降级到 MongoDB 2.4.10 或更高版本。

除本页中所述的 外,在 2.4 和 2.6 之间移动是一种直接替代:

停止现有 mongod 实例。

例如,在 Linux 上,使用--shutdown选项运行 2.4 mongod,如下所示:

mongod --dbpath /var/mongod/data --shutdown

/var/mongod/data替换为您的 MongoDB dbPath。另请参见停止 mongod 进程,以了解停止mongod实例的替代方法。

启动新的 mongod 实例。

确保使用相同的dbPath启动 2.6 mongod

mongod --dbpath /var/mongod/data

/var/mongod/data替换为您的 MongoDB dbPath