Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

对自管理副本集成员进行维护

在此页面上

  • Overview
  • 步骤

副本集支持 MongoDB 部署在维护窗口的大部分时间保持可用。

本文档概述对副本集各成员执行维护的基本过程。此外,此特定序列还能最大限度地减少主节点不可用的时间,并控制对整个部署的影响。

将这些步骤作为常见副本集操作的基础,尤其是升级到最新版本的 MongoDB 等过程。

对于副本集的各成员,从从节点开始,执行以下事件序列,到主节点结束:

1

mongosh中,关闭mongod实例:

db.shutdownServer()
2

在操作系统 Shell 提示符下,将 mongod 作为独立实例重启。

如果使用配置文件,请进行以下配置更新:

例如,如果在分片/配置服务器副本集节点上执行维护,则更新后的配置文件将包含类似以下示例的内容:

net:
bindIp: localhost,<hostname(s)|ip address(es)>
port: 27218
# port: 27018
#replication:
# replSetName: shardA
#sharding:
# clusterRole: shardsvr
setParameter:
skipShardingConfigurationChecks: true
disableLogicalSessionCacheRefresh: true

如果使用命令行选项,请进行以下配置更新以重新启动:

示例,要重新启动不属于分分片集群的副本集成员:

mongod --port 27218 --dbpath /srv/mongodb --bind_ip localhost,<hostname(s)|ip address(es)> --setParameter disableLogicalSessionCacheRefresh=true

例如,要重新启动分片/配置服务器副本集节点进行维护,请执行以下操作:

mongod --port 27218 --dbpath /srv/mongodb --bind_ip localhost,<hostname(s)|ip address(es)> --setParameter skipShardingConfigurationChecks=true --setParameter disableLogicalSessionCacheRefresh=true

警告

将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少应考虑启用身份验证强化网络基础设施。

即使将副本集成员作为独立实例重新启动,也应始终使用同一个用户启动 mongod

3

当节点为独立运行时,使用mongosh执行维护:

mongo --port 27218

重要

虽然该节点是独立的,但不会将任何写入复制到此节点,也不会将此节点上的写入复制到副本集的其他成员。

确保该独立节点上的任何写入都不会与成员重新加入副本集时应用于该成员的 oplog 写入发生冲突。

4

执行所有维护任务后,请使用以下过程,在常用端口上将 mongod 作为副本集成员重启。

mongosh中,完成维护后关闭独立运行服务器:

use admin
db.shutdownServer()

以副本集成员身份重启 mongod 实例,并保留其原始配置,即撤销以独立成员启动时对配置所做的变更。

提示

请务必删除 disableLogicalSessionCacheRefresh 参数。

对于分片或配置服务器节点,请务必删除 skipShardingConfigurationChecks 参数。

启动后,将mongosh连接到重新启动的实例。

从节点需要时间才能赶上主节点 (primary node in the replica set)。 从mongosh开始,使用以下命令验证该成员是否已从RECOVERING状态赶上SECONDARY状态。

rs.status()
5
  1. 要在完成所有从节点的维护任务后对主节点进行维护,请将 mongosh 连接主节点,并使用 rs.stepDown() 降级主节点,让其中一个从节点选举成为新的主节点。指定 300 秒等待时间,防止该成员在五分钟内再次被选举为主节点:

    rs.stepDown(300)

    在主节点降级后,副本集将选举新的主节点

  2. mongod 作为独立实例重启,更新以下配置。

如果使用配置文件,请进行以下配置更新:

例如,如果在分片/配置服务器副本集节点上执行维护,则更新后的配置文件将包含类似以下示例的内容:

net:
bindIp: localhost,<hostname(s)|ip address(es)>
port: 27218
# port: 27018
#replication:
# replSetName: shardA
#sharding:
# clusterRole: shardsvr
setParameter:
skipShardingConfigurationChecks: true
disableLogicalSessionCacheRefresh: true

警告

将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少应考虑启用身份验证强化网络基础设施。

如果使用命令行选项,请进行以下配置更新:

示例,要重新启动不属于分分片集群的副本集成员:

mongod --port 27218 --dbpath /srv/mongodb --bind_ip localhost,<hostname(s)|ip address(es)> --setParameter disableLogicalSessionCacheRefresh=true

例如,要重新启动分片/配置服务器副本集节点进行维护,请执行以下操作:

mongod --port 27218 --dbpath /srv/mongodb --bind_ip localhost,<hostname(s)|ip address(es)> --setParameter skipShardingConfigurationChecks=true --setParameter disableLogicalSessionCacheRefresh=true

警告

将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少应考虑启用身份验证强化网络基础设施。

  1. 在新的独立实例上执行维护任务。

    重要

    虽然该节点是独立的,但不会将任何写入复制到此节点,也不会将此节点上的写入复制到副本集的其他成员。

    确保该独立节点上的任何写入都不会与成员重新加入副本集时应用于该成员的 oplog 写入发生冲突。

  2. 在执行所有维护任务后,以副本集成员身份重启 mongod 实例,并保留其原始配置,即撤销以独立成员启动时对配置所做的变更。

    提示

    请务必删除 disableLogicalSessionCacheRefresh 参数。

    对于分片或配置服务器节点,请务必删除 skipShardingConfigurationChecks 参数。

后退

更改oplog大小

在此页面上