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

将自管理分片集群转换为 WiredTiger

注意

您必须升级到 WiredTiger。MongoDB 从 4.2 版本开始删除了已过时的 MMAPv1 存储引擎。

使用本教程将分片集群更新为使用WiredTiger.

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

WiredTiger支持的"majority"读取关注,默认启用。但是,如果您有一个包含主从仲裁器(PSA)架构的三成员分片副本集,您可以为该分片副本集禁用"majority"读取关注。禁用三成员PSA架构中的"majority"读取关注可以避免可能的缓存压力累积。

注意

禁用"majority"读取关注不会影响更改流可用性。

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

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

  • 如果事务涉及已禁用读取关注点"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角色运行命令可能导致您的集群无法正常工作,并可能导致数据损坏。仅在使用MongoDB支持人员的指导下或出于维护目的时使用directShardOperations角色。一旦完成维护操作,请停止使用directShardOperations角色。

对于每个副本集 分片,更改存储引擎为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,将 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