将自管理分片集群转换为 WiredTiger
注意
您必须升级到 WiredTiger。MongoDB 从 4.2 版本开始删除了已过时的 MMAPv1 存储引擎。
使用本教程将分片集群更新为使用WiredTiger.
注意事项
停机时间
如果您更改任何分片的主机或端口,您还必须更新分片配置。
PSA 3成员架构
WiredTiger支持的"majority"
读取关注,默认启用。但是,如果您有一个包含主从仲裁器(PSA)架构的三成员分片副本集,您可以为该分片副本集禁用"majority"
读取关注。禁用三成员PSA架构中的"majority"
读取关注可以避免可能的缓存压力累积。
注意
禁用"majority"
读取关注不会影响更改流可用性。
禁用"majority"
读取关注点可以防止collMod
命令回滚修改索引。如果此类操作需要回滚,您必须与主节点重新同步受影响的节点。
禁用"majority"
读取关注点会影响对分片集群上的事务的支持。具体来说
如果事务涉及已禁用读取关注点"majority"的碎片,则事务无法使用读取关注点
"snapshot"
。如果事务的读或写操作涉及已禁用读取关注点
"majority"
的碎片,则写入多个碎片的交易将出错。
然而,它不会影响复制集上的事务。对于复制集上的事务,即使禁用了读取关注点"majority"
,您也可以为分布式事务指定读取关注点"majority"
(或"snapshot"
或"local"
)。
有关PSA架构和读取关注点"majority"
的更多信息,请参阅主-副-仲裁复制集。
默认绑定到本地主机
配置服务器
配置服务器必须以副本集(CSRS)的形式部署。因此,配置服务器已经使用WiredTiger存储引擎。
XFS和WiredTiger
使用WiredTiger存储引擎时,在Linux上推荐使用XFS作为数据承载节点。有关更多信息,请参阅内核和文件系统。
仅限MMAPv1的限制
一旦升级到WiredTiger,您的WiredTiger部署就不受以下仅限MMAPv1的限制
MMAPv1限制 | 简要描述 |
---|---|
命名空间数量 | 对于MMAPv1,命名空间数量限制为命名空间文件大小除以628。 |
命名空间文件大小 | 对于MMAPv1,命名空间文件大小不能超过2047兆字节。 |
数据库大小 | MMAPv1存储引擎将每个数据库限制为最多16000个数据文件。 |
数据大小 | 对于MMAPv1,单个 mongod 实例无法管理超出底层操作系统提供的最大虚拟内存地址空间的数据集。 |
数据库中的集合数量 | 对于MMAPv1存储引擎,数据库中集合的最大数量是命名空间文件大小和数据库中集合索引数量的函数。 |
开始之前
从MongoDB 8.0版本开始,您可以使用directShardOperations
角色来执行需要对分片直接执行命令的维护操作。
警告
使用directShardOperations
角色运行命令可能导致您的集群无法正常工作,并可能导致数据损坏。仅在使用MongoDB支持人员的指导下或出于维护目的时使用directShardOperations
角色。一旦完成维护操作,请停止使用directShardOperations
角色。
步骤
对于每个副本集 分片,更改存储引擎为WiredTiger
A. 更新次要成员到WiredTiger。
逐个更新次要成员
关闭辅助成员。
在mongosh
中,关闭辅助。
use admin db.shutdownServer()
使用WiredTiger启动mongod
。
启动mongod
,指定wiredTiger
作为--storageEngine
,并将WiredTiger准备的数据目录作为--dbpath
。
根据需要指定其他选项,例如--bind_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,将 mongosh
连接到主节点,并使用 rs.stepDown()
将主节点降级,并强制进行一次新主节点的选举。
rs.stepDown()
C. 更新旧的主节点。
当主节点降级成为辅助节点后,更新辅助节点以使用WiredTiger,如同之前一样。
关闭辅助成员。
在 mongosh
中关闭辅助节点。
use admin db.shutdownServer()
使用WiredTiger启动mongod
。
启动mongod
,指定wiredTiger
作为--storageEngine
,并将WiredTiger准备的数据目录作为--dbpath
。
根据需要指定其他选项,例如--bind_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
设置。
对其他分片重复此过程。