文档菜单
文档首页
/
MongoDB 手册
/ / / /

将自管理副本集更改为WiredTiger

注意

  • 对于noPaddingusePowerOf2Sizes MMAPv1 选项已从 collMod 命令中删除。collMod 命令中

  • 您必须升级到WiredTiger。MongoDB在4.2版本中删除了过时的MMAPv1存储引擎。

使用本教程将副本集更新为使用 WiredTiger。此过程以滚动方式更新副本集,以避免停机。

副本集可以有不同存储引擎的成员。因此,您可以以滚动方式更新成员以使用WiredTiger存储引擎。

对于WiredTiger,默认启用了可用的 "majority" 读取关注点。然而,在具有主要-次要-仲裁员(PSA)架构的三个成员的副本集中,您可以禁用 "majority" 读取关注点。禁用PSA架构中的 "majority" 读取关注点可以避免可能的缓存压力积累。

对于以下 程序 通过包括 --enableMajorityReadConcern false 来禁用PSA架构的 "majority" 读取关注点。

注意

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

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

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

在Linux上,使用WiredTiger存储引擎时,建议数据承载节点使用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 必须有对此目录的读写权限。您可以删除已停止次要成员当前数据目录的内容,或者创建一个全新的目录。

带有WiredTiger的 mongod 将无法使用不同存储引擎创建的数据文件启动。

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,请先更新所有次要成员,然后再更新主节点。

所有次要成员都已升级到WiredTiger后,将mongosh连接到主节点,并使用rs.stepDown()来降低主节点并强制进行新的主节点选举。

rs.stepDown()

当主节点降低并成为次要节点后,像之前一样将次要节点更新为使用WiredTiger。

1

mongosh 中,关闭次要成员。

use admin
db.shutdownServer()
2

为新运行的带有WiredTiger存储引擎的 mongod 实例准备数据目录。 mongod 必须有对此目录的读写权限。您可以删除已停止次要成员当前数据目录的内容,或者创建一个全新的目录。

带有WiredTiger的 mongod 将无法使用不同存储引擎创建的数据文件启动。

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