对副本集成员进行维护
概述
副本集支持 MongoDB 部署在维护窗口的大部分时间保持可用。
本文档概述对副本集各成员执行维护的基本过程。此外,此特定序列还能最大限度地减少主节点不可用的时间,并控制对整个部署的影响。
使用这些步骤作为常见副本集操作的基础,尤其是升级到最新版本的 MongoDB 等过程。
步骤
对于副本集的各成员,从从节点开始,执行以下事件序列,到主节点结束:
在从节点上执行维护操作。
当节点为独立节点时,使用mongosh
执行维护:
mongo --port 27218
重要
虽然该节点是独立的,但不会将任何写入复制到此节点,也不会将此节点上的写入复制到副本集的其他成员。
确保该独立节点上的任何写入都不会与成员重新加入副本集时应用于该成员的 oplog 写入发生冲突。
mongod
将 重新启动为副本集的成员。
执行所有维护任务后,请使用以下过程,在常用端口上将 mongod
作为副本集成员重启。
在mongosh
中,完成维护后关闭独立服务器:
use admin db.shutdownServer()
以副本集成员身份重启 mongod
实例,并保留其原始配置,即撤销以独立成员启动时对配置所做的变更。
提示
请务必删除 disableLogicalSessionCacheRefresh
参数。
对于分片或配置服务器节点,请务必删除 skipShardingConfigurationChecks
参数。
启动后,将mongosh
连接到重新启动的实例。
从节点需要时间才能赶上主节点。从mongosh
开始,使用以下命令验证该成员是否已从RECOVERING
状态赶上SECONDARY
状态。
rs.status()
最后维护主节点。
要在完成所有从节点的维护任务后对主节点进行维护,请将
mongosh
连接主节点,并使用rs.stepDown()
降级主节点,让其中一个从节点选举成为新的主节点。指定 300 秒等待时间,防止该成员在五分钟内再次被选举为主节点:rs.stepDown(300) 在主节点降级后,副本集将选举新的主节点。
将
mongod
作为独立实例重启,更新以下配置。
在新的独立实例上执行维护任务。
重要
虽然该节点是独立的,但不会将任何写入复制到此节点,也不会将此节点上的写入复制到副本集的其他成员。
确保该独立节点上的任何写入都不会与成员重新加入副本集时应用于该成员的 oplog 写入发生冲突。
在执行所有维护任务后,以副本集成员身份重启
mongod
实例,并保留其原始配置,即撤销以独立成员启动时对配置所做的变更。提示
请务必删除
disableLogicalSessionCacheRefresh
参数。对于分片或配置服务器节点,请务必删除
skipShardingConfigurationChecks
参数。