将自管理副本集更改为WiredTiger
注意
collMod
命令的noPadding
和usePowerOf2Sizes
MMAPv 1选项已删除。您必须升级到 WiredTiger。MongoDB 移除了版本 4.2 中已弃用的 MMAPv1 storage engine。
使用本教程更新副本集以使用 WiredTiger。该操作过程以滚动方式更新副本集以避免停机。
Considerations
副本集可以包含采用不同存储引擎的节点。因此,您可以更新节点以便以滚动方式使用 WiredTiger 存储引擎。
PSA 3-节点架构
适用于 WiredTiger 的 "majority"
读关注默认处于启用状态。但是,在具有主节点-从节点-仲裁节点 (PSA) 架构的三成员副本集中,您可以禁用 "majority"
读关注。禁用三成员 PSA 架构的 "majority"
读关注可避免可能出现的缓存压力累积。
下面的 过程 通过包含 禁用 PSA"majority"
架构的--enableMajorityReadConcern false
读关注。
注意
禁用 "majority"
读关注对变更流可用性没有影响。
有关 PSA 架构和读关注 "majority"
的更多信息,请参阅主节点-从节点-仲裁节点副本集。
默认绑定至本地主机
XFS 和 WiredTiger
对于 WiredTiger 存储引擎,建议在 Linux 上使用 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()
mongod
为使用WiredTiger运行的新 准备数据目录。
为将使用 WiredTiger 存储引擎运行的新 mongod
实例准备数据目录。mongod
必须具有此目录的读写权限。您可以删除已停止的从节点当前数据目录的内容,也可以创建一个全新的目录。
mongod
带有 WiredTiger,不会启动使用其他存储引擎创建的数据文件。
更新 WiredTiger 的配置。
从 mongod
实例配置中删除任何 MMAPv1 配置选项。
mongod
使用WiredTiger启动 。
启动 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
设置。
对其余从节点重复上述步骤,每次更新一个。
B. 降级主节点。
重要
如果将副本集的所有成员更新为使用 WiredTiger,请确保在更新主节点之前已更新所有从节点成员。
所有从节点都升级至 WiredTiger 后,将 mongosh
连接到主节点,然后使用 rs.stepDown()
将主节点降级并强制选举新的主节点。
rs.stepDown()
C. 更新已降级的主节点。
当主节点降级并成为从节点时,更新从节点以像之前一样使用 WiredTiger:
关闭从节点。
在 mongosh
中,关闭从节点。
use admin db.shutdownServer()
mongod
为使用WiredTiger运行的新 准备数据目录。
为将使用 WiredTiger 存储引擎运行的新 mongod
实例准备数据目录。mongod
必须具有此目录的读写权限。您可以删除已停止的从节点当前数据目录的内容,也可以创建一个全新的目录。
mongod
带有 WiredTiger,不会启动使用其他存储引擎创建的数据文件。
更新 WiredTiger 的配置。
从 mongod
实例配置中删除任何 MMAPv1 配置选项。
mongod
使用WiredTiger启动 。
启动 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
设置。