对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

将自管理分片集群更改为 WiredTiger

注意

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

使用本教程更新分片分片集群以使用WiredTiger。

如果更改任何分片的主机或端口,则必须同时更新分片配置。

适用于WiredTiger的"majority"读关注(read concern)默认启用。 但是,如果您有一个具有主分片-从节点-仲裁节点 (PSA) 架构的三成员分片副本集,则可以为该分片副本集禁用"majority"读关注(read concern)。 为三成员 PSA 架构禁用"majority"可避免可能的缓存压力构建。

注意

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

如果禁用 "majority"读关注(read concern), MongoDB会阻止修改索引的 collMod 命令回滚。如果需要回滚 命令,则必须将受影响的节点与主节点collMod (primary node in the replica set)节点重新同步。

禁用"majority"读关注会影响对分片集群上事务的支持。 具体来说:

  • 如果事务涉及已"snapshot" 禁用读关注“多数” 的分片,则该事务无法使用读关注

  • 如果事务的任何读取或写入操作涉及已禁用读关注 "majority" 的分片,则写入多个分片的事务会出错。

不过,它不会影响副本集上的事务。对于副本集上的事务,即使禁用了读关注点 "majority",也可以为分布式事务指定读取关注 "majority"(或 "snapshot""local")。

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

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

配置服务器必须部署为副本集 (CSRS)。 因此,配置服务器已使用WiredTiger存储引擎。

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

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

MMAPv1 限制
简短描述

命名空间数

对于 MMAPv1,命名空间的数量限制为命名空间文件的大小除以 628。

命名空间文件的大小

对于 MMAPv1,命名空间文件的大小不得超过 2047 兆字节。

数据库大小

MMAPv1 存储引擎将每个数据库限制为不超过 16000 个数据文件。

数据大小

对于 MMAPv1,单个 mongod 实例管理的数据集不能超过底层操作系统提供的最大虚拟内存地址空间。

数据库中的集合数量

对于 MMAPv1 存储引擎,数据库中集合的最大数量是命名空间文件大小和数据库中集合索引数量的函数。

从MongoDB 8.0开始,您可以使用directShardOperations角色执行需要直接对分片执行命令的分片操作。

警告

使用 directShardOperations角色运行命令可能会导致集群停止正常工作,并可能导致数据损坏。仅将 directShardOperations角色用于维护目的或在MongoDB支持的指导下使用。执行完维护操作后,请停止使用 directShardOperations角色。

对于每个副本集分片,将存储引擎更改为WiredTiger

逐个更新从节点成员:

1

在 中,关闭从从节点(secondary node from replicamongosh set)。

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 majority以禁用读关注(read concern)3 。 PSA -member 架构

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

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

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

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

将所有从从节点(secondary node from replica set)升级到WiredTiger后,将mongosh 连接到主节点 (primary node in the replicars.stepDown() set),并使用 降级主节点 (primary node in the replica set)并强制选举新的主节点 (primary node in the replica set)。

rs.stepDown()

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

1

在 中,关闭从从节点(secondary node from replicamongosh set)。

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 majority以禁用读关注(read concern)3 。 PSA -member 架构

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

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

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

对其它分片重复该过程。