副本集允许MongoDB部署在大部分维护时段内保持可用。
本文档概述了对副本集的每个成员执行维护的基本过程。此外,此特定序列将尽量减少主数据库不可用的时间, 并控制对整个部署的影响。
使用这些步骤作为常见副本集操作的基础,尤其是对于诸如升级到最新版本的MongoDB的过程。
对于副本集的每个成员,从次要成员开始,执行以下事件序列,以主要事件结束:
在操作系统外壳程序提示符下,mongod
作为独立实例重新启动。
如果您使用的是配置文件,请进行以下配置更新:
replication.replSetName
选项。net.port
改为其他端口。记下原始端口设置作为注释。disableLogicalSessionCacheRefresh
为
。true
setParameter
mongod
是碎片或
配置服务器的成员,你还必须:sharding.clusterRole
选项。skipShardingConfigurationChecks
中将参数设置(也适用于MongoDB 3.6.3 +,3.4.11 +,3.2.19 +)
。true
setParameter
例如,如果对分片/配置服务器副本集成员执行维护以进行维护,则更新的配置文件将包含类似于以下示例的内容:
如果使用命令行选项,请进行以下配置更新以重新启动:
--replSetName
。--port
为其他端口。disableLogicalSessionCacheRefresh
为
。true
--setParameter
mongod
是碎片或
配置服务器的成员,你还必须:--shardsvr
如果分片成员和--configsvr
配置服务器成员都删除。skipShardingConfigurationChecks
中将参数设置
(也适用于MongoDB 3.6.3 +,3.4.11 +,3.2.19 +)
。true
setParameter
例如,重新启动不属于分片群集的副本集成员:
例如,要重新启动分片/配置服务器副本集成员以进行维护:
mongod
即使将副本集成员作为独立实例重新启动,也始终以同一用户开头。
要在完成所有辅助服务器上的维护任务后对主要服务器执行维护,请将mongo
外壳连接
到主要服务器,并使用
rs.stepDown()
降级主服务器并允许其中一个辅助服务器被选举为新的主要服务器。指定300秒的等待时间,以防止该成员在五分钟内再次当选主要成员:
在主服务器降级后,副本集将选择一个新的主服务器。
mongod
作为独立实例重新启动,进行以下配置更新。
如果您使用的是配置文件,请进行以下配置更新:
replication.replSetName
选项。net.port
改为其他端口。记下原始端口设置作为注释。disableLogicalSessionCacheRefresh
为
。true
--setParameter
mongod
是碎片或
配置服务器的成员,你还必须:sharding.clusterRole
选项。skipShardingConfigurationChecks
中将参数设置(也适用于MongoDB 3.6.3 +,3.4.11 +,3.2.19 +)
。true
setParameter
例如,如果对分片/配置服务器副本集成员执行维护以进行维护,则更新的配置文件将包含类似于以下示例的内容:
如果使用命令行选项,请进行以下配置更新:
--replSetName
。--port
为其他端口。disableLogicalSessionCacheRefresh
为
。true
--setParameter
mongod
是碎片或
配置服务器的成员,你还必须:--shardsvr
如果分片成员和--configsvr
配置服务器成员都删除。skipShardingConfigurationChecks
中将参数设置
(也适用于MongoDB 3.6.3 +,3.4.11 +,3.2.19 +)
。true
setParameter
例如,重新启动不属于分片群集的副本集成员:
例如,要重新启动分片/配置服务器副本集成员以进行维护:
在现在的独立服务器上执行维护任务。
重要
当成员是独立成员时,不会将任何写操作复制到该成员,也不会将对此成员的写操作复制到副本集的其他成员。
确保在此独立服务器上进行的任何写入操作均不会与成员重新加入副本集时将应用于该成员的操作日志写入操作冲突。
执行完所有维护任务后,mongod
以具有原始配置的副本集成员的身份重新启动
实例;也就是说,撤消独立启动时所做的配置更改。