从 3.0 降级 MongoDB

在本页面

在尝试任何降级之前,请熟悉本文档的内容,尤其是降级建议和清单降级分片集群的过程。

降级建议和清单

降级时,请考虑以下因素:

Downgrade Path

升级到 MongoDB 3.0 后,您不能将其降级到低于 2.6.8 的版本。

Important

如果您升级到 MongoDB 3.0 并已运行authSchemaUpgrade,则不能在不禁用--auth的情况下**降级到 2.6 系列。

Procedures

请遵循降级过程:

Note

可选的 。降级后考虑compacting个收藏集。否则,较旧的版本将无法重用运行 3.0 时创建的大于 2MB 的可用空间区域。降级可能会导致空间浪费,但不会造成数据丢失。

降级 MongoDB 流程

降级独立 mongod 实例

如果已将存储引擎更改为WiredTiger,则在降级到 2.6 之前将存储引擎更改为 MMAPv1.

将存储引擎更改为 MMAPv1

要将独立的mongod实例的存储引擎更改为 MMAPv1,您将需要使用mongodumpmongorestore手动导出和上传数据。

确保 3.0 mongod 与 WiredTiger 一起运行。
使用 mongodump 导出数据。
mongodump --out <exportDataDestination>

根据需要指定其他选项,例如用户名和密码(如果在启用授权的情况下运行)。有关可用选项,请参见mongodump

为 MMAPv1 创建数据目录。

为 MMAPv1 创建一个新的数据目录。确保运行mongod的用户帐户具有对新目录的读写权限。

使用 MMAPv1 重新启动 mongod。

重新启动 3.0 mongod,将 MMAPv1 的新创建数据目录指定为--dbpath。您不必指定--storageEngine,因为 MMAPv1 是默认设置。

mongod --dbpath <newMMAPv1DBPath>

根据需要指定其他选项。

使用 mongorestore 上传导出的数据。
mongorestore <exportDataDestination>

根据需要指定其他选项。有关可用选项,请参见mongorestore

Downgrade Binaries

以下步骤概述了将独立的mongod从版本 3.0 降级到 2.6 的过程。

升级到 MongoDB 3.0 后,您不能将其降级到低于 2.6.8 的版本。

下载 2.6 二进制文件。

MongoDB 下载页面下载 2.6 系列最新版本的二进制文件。有关更多信息,请参见Install MongoDB

替换为 2.6 二进制文件。

关闭您的mongod实例。将现有的二进制文件替换为 2.6 mongod二进制文件,然后重新启动mongod

降级 3.0 副本集

如果已将存储引擎更改为 WiredTiger,则在降级到 2.6 之前将存储引擎更改为 MMAPv1.

将存储引擎更改为 MMAPv1

您可以更新成员以滚动方式使用 MMAPv1 存储引擎。

Note

当运行带有混合存储引擎的副本集时,性能可能会因工作负载而异。

要将现有辅助副本集成员的存储引擎更改为 MMAPv1,请删除该成员的数据并执行initial sync

关闭次要成员。

停止辅助成员的mongod实例。

准备 MMAPv1 的数据目录。

准备--dbpath目录以进行初始同步。

对于已停止的辅助成员,请删除数据目录的内容或创建一个新的数据目录。如果创建新目录,请确保运行mongod的用户帐户具有对新目录的读写权限。

使用 MMAPv1 重新启动辅助成员。

重新启动 3.0 mongod,将 MMAPv1 数据目录指定为--dbpath。指定适合该成员的其他选项。您不必指定--storageEngine,因为 MMAPv1 是默认设置。

mongod --dbpath <preparedMMAPv1DBPath>

由于--dbpath中没有数据,因此mongod将执行初始同步。初始同步过程的长度取决于数据库的大小以及副本集成员之间的网络连接。

对其余的次要成员重复上述步骤。一旦所有辅助成员都切换到 MMAPv1,则降级主要成员并更新已降级的成员。

Downgrade Binaries

升级到 MongoDB 3.0 后,您不能将其降级到低于 2.6.8 的版本。

以下步骤概述了副本集的“滚动”降级过程。 “滚动”降级过程通过在其他成员可用时分别对成员降级来最大程度地减少停机时间:

降级副本集的辅助成员。

降级副本集的每个secondary成员,一次降级:

降级初级。

mongoShell 程序中使用rs.stepDown()来降低primary并强制执行正常的failover过程。

rs.stepDown()
替换并重新启动以前的主要 mongod。

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

副本集故障转移不是即时的,但将导致该集不可用于写入和中断读取,直到故障转移过程完成为止。通常,这需要 10 秒钟或更长时间。您可能希望在 sched 的维护时段内计划降级。

降级 3.0 分片群集

Requirements

在降级过程中,您无法更改集合元数据。例如,在降级期间,请 不要 执行以下任何操作:

将存储引擎更改为 MMAPv1

如果已将存储引擎更改为 WiredTiger,则在降级到 2.6 之前将存储引擎更改为 MMAPv1.

更改分片以使用 MMAPv1

要将存储引擎更改为 MMAPv1,请参考适用于您的分片的将副本集成员的存储引擎更改为 MMAPv1将用于独立 mongod 的存储引擎更改为 MMAPv1中的过程。

更改配置服务器以使用 MMAPv1

Note

在此过程中,在任何给定时间都将仅运行两个配置服务器,以确保分片群集的元数据为只读

禁用平衡器。

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

停止 mongos 的 configDB 设置中列出的最后一个配置服务器。
导出 mongos 的 configDB 设置中列出的第二个配置服务器的数据。
mongodump --out <exportDataDestination>

根据需要指定其他选项,例如用户名和密码(如果在启用授权的情况下运行)。有关可用选项,请参见mongodump

对于第二个配置服务器,为 MMAPv1 创建一个新的数据目录。

确保运行mongod的用户帐户具有对新目录的读写权限。

使用 MMAPv1 重新启动第二个配置服务器。

将新创建的 MMAPv1 数据目录指定为--dbpath,并指定其他适当的选项。

mongod --dbpath <newMMAPv1DBPath> --configsvr
使用 mongorestore 将导出的数据上传到第二个配置服务器。
mongorestore <exportDataDestination>

根据需要指定其他选项。有关可用选项,请参见mongorestore

关闭第二台配置服务器。
重新启动第三个配置服务器。
导出第三个配置服务器的数据。
mongodump --out <exportDataDestination>

根据需要指定其他选项,例如用户名和密码(如果在启用授权的情况下运行)。有关可用选项,请参见mongodump

对于第三个配置服务器,为 MMAPv1 创建一个新的数据目录。

确保运行mongod的用户帐户具有对新目录的读写权限。

使用 MMAPv1 重新启动第三个配置服务器。

将新创建的 MMAPv1 数据目录指定为--dbpath,并指定其他适当的选项。

mongod --dbpath <newMMAPv1DBPath> --configsvr
使用 mongorestore 将导出的数据上传到第三台配置服务器。
mongorestore <exportDataDestination>

根据需要指定其他选项。有关可用选项,请参见mongorestore

导出 mongos 的 configDB 设置中列出的第一个配置服务器的数据。
mongodump --out <exportDataDestination>

根据需要指定其他选项,例如用户名和密码(如果在启用授权的情况下运行)。有关可用选项,请参见mongodump

对于第一个配置服务器,为 MMAPv1 创建数据目录。

确保运行mongod的用户帐户具有对新目录的读写权限。

使用 MMAPv1 重新启动第一个配置服务器。

将新创建的 MMAPv1 数据目录指定为--dbpath,并指定其他适当的选项。

mongod --dbpath <newMMAPv1DBPath> --configsvr
使用 mongorestore 将导出的数据上传到第一台配置服务器。
mongorestore <exportDataDestination>

根据需要指定其他选项。有关可用选项,请参见mongorestore

启用写入分片群集的元数据。

重新启动 second 配置服务器,将新创建的 MMAPv1 数据目录指定为--dbpath。根据需要指定其他选项。

mongod --dbpath <newMMAPv1DBPath> --configsvr

一旦所有三个配置服务器都启动,分片群集的元数据即可用于写入。

重新启用平衡器。

一旦所有三个配置服务器都启动并通过 WiredTiger 重新启用平衡器运行。

Downgrade Binaries

升级到 MongoDB 3.0 后,您不能将其降级到低于 2.6.8 的版本。

分片群集的降级过程将逆转升级过程的 Sequences。版本v6 config 数据库与 MongoDB 2.6 向后兼容。

禁用平衡器。

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

降级每个碎片,一次降级。

对于每个分片:

降级配置服务器。

降级所有 3 个mongod配置服务器实例,将mongos --configdb参数中的* first 系统降级 last *。

降级 mongos 实例。

降级并重新启动每个mongos,一次一次。降级过程是二进制的直接替换。

重新启用平衡器。

分片群集组件的升级完成后,重新启用平衡器

一般降级步骤

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

停止现有 mongod 实例。

例如,在 Linux 上,使用--shutdown选项运行 3.0 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

首页