On this page
将 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。