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

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

本页内容

  • 概述
  • 步骤

副本集允许MongoDB部署在大多数维护窗口期间保持可用。

本文档概述了对副本集每个成员执行维护的基本程序。此外,这个特定的顺序旨在最大限度地减少主节点不可用的时间和整个部署的影响。

将以下步骤作为常见副本集操作的基础,特别是对于升级到最新版本的MongoDB等程序。

对于副本集中的每个成员,从辅助成员开始,按以下顺序执行事件,以主节点结束。

  • 以独立实例方式重启mongod实例。

  • 在独立实例上执行任务。

  • 以副本集成员的方式重启mongod实例。

1

mongosh中,关闭mongod实例

db.shutdownServer()
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

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

例如,重启非分片集群的副本集成员

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 连接到重启后的实例。

次要副本需要一些时间才能赶上主要副本。从 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 大小

本页内容