将自管理副本集更改为WiredTiger
注意
对于
noPadding
和usePowerOf2Sizes
MMAPv1 选项已从collMod
命令中删除。collMod
命令中您必须升级到WiredTiger。MongoDB在4.2版本中删除了过时的MMAPv1存储引擎。
使用本教程将副本集更新为使用 WiredTiger。此过程以滚动方式更新副本集,以避免停机。
注意事项
副本集可以有不同存储引擎的成员。因此,您可以以滚动方式更新成员以使用WiredTiger存储引擎。
PSA 3成员架构
对于WiredTiger,默认启用了可用的 "majority"
读取关注点。然而,在具有主要-次要-仲裁员(PSA)架构的三个成员的副本集中,您可以禁用 "majority"
读取关注点。禁用PSA架构中的 "majority"
读取关注点可以避免可能的缓存压力积累。
对于以下 程序 通过包括 --enableMajorityReadConcern false
来禁用PSA架构的 "majority"
读取关注点。
注意
禁用 "majority"
读取关注对更改流可用性没有影响。
有关PSA架构和读取关注 "majority"
的更多信息,请参阅 主-副仲裁副本集。
默认绑定到本地主机
XFS和WiredTiger
在Linux上,使用WiredTiger存储引擎时,建议数据承载节点使用XFS。有关更多信息,请参阅 内核和文件系统。
MMAPv1仅限制
一旦升级到WiredTiger,您的WiredTiger部署 不受 以下MMAPv1仅限制的影响
MMAPv1 限制 | 简短描述 |
---|---|
命名空间数量 | 对于 MMAPv1,命名空间的数量限制为命名空间文件大小除以 628。 |
命名空间文件大小 | 对于 MMAPv1,命名空间文件的大小不能超过 2047 兆字节。 |
数据库大小 | MMAPv1 存储引擎限制每个数据库最多 16000 个数据文件。 |
数据大小 | 对于 MMAPv1,单个 mongod 实例无法管理超出底层操作系统提供的最大虚拟内存地址空间的数据集。 |
数据库中的集合数量 | 对于 MMAPv1 存储引擎,数据库中集合的最大数量是命名空间文件大小和数据库中集合索引数量的函数。 |
过程
以下过程以滚动方式更新副本集。过程首先更新 次要 成员,然后降级 主要 成员,并更新降级的成员。
要将成员更新为 WiredTiger,过程删除成员数据,启动带有 WiredTiger 的 mongod
,并执行 初始同步。
A. 将次要成员更新为 WiredTiger。
逐个更新次要成员
关闭次要成员。
在 mongosh
中,关闭次要成员。
use admin db.shutdownServer()
为新运行的带有WiredTiger的 mongod
准备数据目录。
为新运行的带有WiredTiger存储引擎的 mongod
实例准备数据目录。 mongod
必须有对此目录的读写权限。您可以删除已停止次要成员当前数据目录的内容,或者创建一个全新的目录。
带有WiredTiger的 mongod
将无法使用不同存储引擎创建的数据文件启动。
更新WiredTiger配置。
从 mongod
实例配置中删除任何MMAPv1配置选项。
使用WiredTiger启动mongod
。
启动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
设置。
对剩余的辅助成员重复这些步骤,逐个更新。
B. 降低主节点。
重要
如果要将副本集的所有成员更新为使用WiredTiger,请先更新所有次要成员,然后再更新主节点。
所有次要成员都已升级到WiredTiger后,将mongosh
连接到主节点,并使用rs.stepDown()
来降低主节点并强制进行新的主节点选举。
rs.stepDown()
C. 更新降低的主节点。
当主节点降低并成为次要节点后,像之前一样将次要节点更新为使用WiredTiger。
关闭次要节点成员。
在 mongosh
中,关闭次要成员。
use admin db.shutdownServer()
为使用WiredTiger运行的新的mongod
准备数据目录。
为新运行的带有WiredTiger存储引擎的 mongod
实例准备数据目录。 mongod
必须有对此目录的读写权限。您可以删除已停止次要成员当前数据目录的内容,或者创建一个全新的目录。
带有WiredTiger的 mongod
将无法使用不同存储引擎创建的数据文件启动。
更新WiredTiger的配置。
从 mongod
实例配置中删除任何MMAPv1配置选项。
使用WiredTiger启动mongod
。
启动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
设置。