将自管理分片集群更改为 WiredTiger
注意
您必须升级到 WiredTiger。MongoDB 移除了版本 4.2 中已弃用的 MMAPv1 storage engine。
使用本教程更新分片分片集群以使用 WiredTiger。
Considerations
宕机时间
如果更改任何分片的主机或端口,则必须同时更新分片配置。
PSA 3-节点架构
默认情况下,启用适用于 WiredTiger 的 "majority"
读关注(read concern)。但是,如果您有一个具有主节点-从节点-仲裁节点 (PSA) 架构的三成员分片副本集,则可以为该分片副本集禁用"majority"
读关注(read concern)。为三成员 PSA 架构禁用"majority"
可避免可能的缓存压力累积。
注意
禁用 "majority"
读关注对变更流可用性没有影响。
禁用"majority"
读关注可防止修改索引的collMod
命令回滚。 如果需要回滚此类操作,则必须将受影响的节点与主节点重新同步。
禁用"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
角色运行命令可能会导致集群停止正常工作,并可能导致数据损坏。 仅将directShardOperations
角色用于维护目的或在MongoDB支持的指导下使用。 执行完维护操作后,请停止使用directShardOperations
角色。
步骤
对于每个副本集分片,将存储引擎更改为WiredTiger :
A. 将从节点更新为 WiredTiger。
逐个更新从节点成员:
关闭从节点。
在 mongosh
从节点(secondary node from replica set),关闭从节点。
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 后,将 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
设置。
对其它分片重复该过程。