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

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

注意

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

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

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

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

注意

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

禁用"majority"读关注可防止修改索引的collMod命令回滚。 如果需要回滚此类操作,则必须将受影响的节点与节点重新同步。

禁用"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

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以禁用读关注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 后,将 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以禁用读关注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