Docs 菜单
Docs 主页
/
MongoDB Manual
/ / / /

将自管理副本集更改为WiredTiger

注意

  • collMod命令的 noPaddingusePowerOf2Sizes MMAPv 1选项已删除。

  • 您必须升级到 WiredTiger。MongoDB 移除了版本 4.2 中已弃用的 MMAPv1 storage engine。

使用本教程更新副本集以使用 WiredTiger。该操作过程以滚动方式更新副本集以避免停机。

副本集可以包含采用不同存储引擎的节点。因此,您可以更新节点以便以滚动方式使用 WiredTiger 存储引擎。

适用于 WiredTiger 的 "majority" 读关注默认处于启用状态。但是,在具有主节点-从节点-仲裁节点 (PSA) 架构的三成员副本集中,您可以禁用 "majority" 读关注。禁用三成员 PSA 架构的 "majority" 读关注可避免可能出现的缓存压力累积。

下面的 过程 通过包含 禁用 PSA"majority" 架构的--enableMajorityReadConcern false 读关注。

注意

禁用 "majority" 读关注对变更流可用性没有影响。

有关 PSA 架构和读关注 "majority" 的更多信息,请参阅主节点-从节点-仲裁节点副本集

默认情况下,MongoDB 二进制文件 mongodmongos 绑定到 localhost

对于 WiredTiger 存储引擎,建议在 Linux 上使用 XFS 作为数据承载节点。有关详情,请参阅内核和文件系统

升级到 WiredTiger 后,WiredTiger 部署受以下仅限于 MMAPv1 限制的约束:

MMAPv1 限制
简短描述
命名空间数
对于 MMAPv1,命名空间的数量限制为命名空间文件的大小除以 628。
命名空间文件的大小
对于 MMAPv1,命名空间文件的大小不得超过 2047 兆字节。
数据库大小
MMAPv1 存储引擎将每个数据库限制为不超过 16000 个数据文件。
数据大小
对于 MMAPv1,单个 mongod 实例管理的数据集不能超过底层操作系统提供的最大虚拟内存地址空间。
数据库中的集合数量
对于 MMAPv1 存储引擎,数据库中集合的最大数量是命名空间文件大小和数据库中集合索引数量的函数。

以下操作过程以滚动方式更新副本集。该操作过程首先更新节点,然后降级节点,并更新已降级的节点。

要将节点更新为 WiredTiger,该过程会删除节点的数据,使用 WiredTiger 启动 mongod,然后执行初始同步。

逐个更新从节点成员:

1

mongosh 中,关闭从节点。

use admin
db.shutdownServer()
2

为将使用 WiredTiger 存储引擎运行的新 mongod 实例准备数据目录。mongod 必须具有此目录的读写权限。您可以删除已停止的从节点当前数据目录的内容,也可以创建一个全新的目录。

mongod 带有 WiredTiger,不会启动使用其他存储引擎创建的数据文件。

3

mongod 实例配置中删除任何 MMAPv1 配置选项。

4

启动 mongod,指定 wiredTiger--storageEngine,为 WiredTiger 编写的数据目录为 --dbpath

根据需要指定其他选项,如 --bind_ip

警告

在绑定到非本地主机(例如 可公开访问的) IP解决,确保已保护集群免遭未经授权的访问权限。 有关安全建议的完整列表,请参阅自托管部署的安全检查清单。 至少应考虑启用身份验证强化网络基础架构。

mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath> --replSet <replSetName> --bind_ip localhost,<hostname(s)|ip address(es)>

重要

如果您运行的是三成员 PSA 架构,请包含--enableMajorityReadConcern false以禁用读关注(read concern)majority 。 请参阅PSA 3节点架构

mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath> --replSet <replSetName> --bind_ip localhost,<hostname(s)|ip address(es)> --enableMajorityReadConcern false

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

您也可以在配置文件中指定这些选项。要指定存储引擎,请使用 storage.engine 设置。

对其余从节点重复上述步骤,每次更新一个。

重要

如果将副本集的所有成员更新为使用 WiredTiger,请确保在更新主节点之前已更新所有从节点成员。

所有从节点都升级至 WiredTiger 后,将 mongosh 连接到主节点,然后使用 rs.stepDown() 将主节点降级并强制选举新的主节点。

rs.stepDown()

当主节点降级并成为从节点时,更新从节点以像之前一样使用 WiredTiger:

1

mongosh 中,关闭从节点。

use admin
db.shutdownServer()
2

为将使用 WiredTiger 存储引擎运行的新 mongod 实例准备数据目录。mongod 必须具有此目录的读写权限。您可以删除已停止的从节点当前数据目录的内容,也可以创建一个全新的目录。

mongod 带有 WiredTiger,不会启动使用其他存储引擎创建的数据文件。

3

mongod 实例配置中删除任何 MMAPv1 配置选项。

4

启动 mongod,指定 wiredTiger--storageEngine,为 WiredTiger 编写的数据目录为 --dbpath

根据需要指定其他选项,如 --bind_ip

警告

在绑定到非本地主机(例如 可公开访问的) IP解决,确保已保护集群免遭未经授权的访问权限。 有关安全建议的完整列表,请参阅自托管部署的安全检查清单。 至少应考虑启用身份验证强化网络基础架构。

mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath> --replSet <replSetName> --bind_ip localhost,<hostname(s)|ip address(es)>

重要

如果您运行的是三成员 PSA 架构,请包含--enableMajorityReadConcern false以禁用读关注(read concern)majority 。 请参阅PSA 3节点架构

mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath> --replSet <replSetName> --bind_ip localhost,<hostname(s)|ip address(es)> --enableMajorityReadConcern false

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

您也可以在配置文件中指定这些选项。要指定存储引擎,请使用 storage.engine 设置。

后退

将自管理独立运行更改为WiredTiger