将 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 mongos或mongod并运行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()
的方法,那么您必须 在mongod或mongos实例之前 升级那些驱动程序(即 Client 端库)。 -
在升级授权模型之前,您必须完全完成所有* MongoDB 进程的升级过程。
在开始将使用身份验证的 MongoDB 部署升级到 2.6 之后,您无法修改现有的用户数据,直到完成授权用户架构升级为止。
有关授权模型的升级过程的完整讨论,请参见将用户授权数据升级到 2.6 格式,其中包括其他要求和过程。
Downgrade Limitations
升级到 MongoDB 2.6 后,您不能**降级到 MongoDB 2.4 之前的任何版本。如果在运行 2.6 时创建了text
或2dsphere
索引,则只能降级到 MongoDB 2.4.10 或更高版本。
Package Upgrades
如果从 MongoDB apt
或yum
存储库安装了 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
。
请参阅Ubuntu,RHEL,Debian,SUSE或Amazon的安装说明,以获取可用软件包的列表以及完整的 MongoDB 安装说明。
升级 MongoDB 流程
将独立 mongod 实例升级到 MongoDB 2.6
以下步骤概述了将独立的mongod从版本 2.4 升级到 2.6 的过程。要从 2.2 版升级到 2.6,请先升级到版本 2.4 首先,然后按照以下步骤从 2.4 版升级到 2.6.
-
从MongoDB 下载页面下载 2.6 系列最新版本的二进制文件。有关更多信息,请参见Install MongoDB。
将副本集升级到 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并将其设置为failover。 rs.stepDown()加快了故障转移过程,比直接关闭主数据库更可取。
升级主数据库。
当rs.status()显示主要数据库已降级,而另一个成员已处于PRIMARY
状态时,请关闭先前的主要数据库,并用 2.6 二进制文件替换mongod二进制文件并启动新实例。
副本集故障转移不是即时的,但是将使该集不可用,接受写入操作将一直持续到故障转移过程完成为止。通常,这需要 30 秒或更长时间:在计划的维护时段内计划升级过程。
将分片群集升级到 2.6
如果集群的所有成员当前正在运行 2.4 实例,则仅将分片集群升级到 2.6. 运行 2.2 的分片群集的唯一受支持的升级路径是通过 2.4. 升级过程将检查群集的所有组件,如果有任何组件正在运行版本 2.2,则会产生警告。
Considerations
升级过程不需要任何停机时间。但是,在升级分片群集时,请确保 Client 端不对集合元数据进行更改。例如,在升级期间,请 不要 执行以下任何操作:
-
创建数据库的任何操作
-
任何以任何方式修改群集元数据的其他操作。有关分片命令的完整列表,请参见Sharding Reference。但是请注意,并非Sharding Reference页上的所有命令都会修改群集元数据。
升级分片群集
*可选,但建议.*作为预防措施,在升级分片群集之前,请备份config
数据库。
禁用平衡器。
升级群集的元数据。
使用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 部署中的其他实例。
在仍然禁用平衡器的情况下,请按以下 Sequences 升级分片群集的组件:
-
升级所有 3 个mongod配置服务器实例,将* first 系统留在mongos --configdb参数中以升级 last *。
-
一次升级每个分片,在运行replSetStepDown之前先升级mongod个从属,并升级每个分片的主。
此过程完成后,重新启用平衡器。
Upgrade Procedure
升级到 MongoDB 2.6 后,您不能**降级到 MongoDB 2.4 之前的任何版本。如果您具有text
或2dsphere
索引,则只能降级到 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 实例。
mongod --dbpath /var/mongod/data
将/var/mongod/data
替换为您的 MongoDB dbPath。