rs.stepDown()

在本页面

Description

  • rs. stepDown(* stepDownSecs secondaryCatchUpPeriodSecs *)

该方法不会立即降级主要数据库。如果没有electable个辅助节点与主节点保持最新,则主节点最多 awaitsecondaryCatchUpPeriodSecs个(默认情况下为 10 秒)以使辅助节点赶上。一旦有可选的辅助节点可用,该方法将降低主节点。

降级后,原始的主要节点将成为辅助节点,并且在stepDownSecs指定的剩余时间内没有资格再次成为主要节点。

有关该方法执行的详细说明,请参见Behavior

Note

该方法仅对主要对象有效,如果在非主要成员上运行,则抛出错误。

rs.stepDown()方法具有以下参数:

ParameterTypeDescription
stepDownSecsnumber降级主节点的秒数,在此期间,降级成员不符合成为主节点的资格。如果指定非数字值,该命令将使用60秒。


降级周期从mongod接收命令开始。降压周期必须大于secondaryCatchUpPeriodSecs
| secondaryCatchUpPeriodSecs |数字|可选。 mongodawait 可选举的辅助节点赶上主要节点的秒数。
如果指定,则secondaryCatchUpPeriodSecs会覆盖默认的 await 时间10秒。

rs.stepDown()提供围绕命令replSetStepDown的包装。

Behavior

Concurrent Operations

rs.stepDown()方法尝试终止长时间运行的用户操作,这些操作会阻止主数据库降级,例如索引构建,写入操作或 map-reduce 作业。

合格中学的可用性

然后,该方法启动一个追赶期,在此期间它最多 awaitsecondaryCatchUpPeriodSeconds,默认情况下 await10 秒,以使辅助节点与主节点保持最新状态。仅当辅助服务器在追赶期间与主服务器保持最新时,主服务器才会降级,以防止rollbacks

如果在 await 期结束时没有可选举的辅助节点满足此标准,则主要节点不会降级并且方法会出错。

一旦主要节点成功下台,该节点就无法在stepDownSecs期间的剩余时间内成为主要节点,该时间段是在该节点收到该方法后开始的。

Client Connections

rs.stepDown()方法强制当前连接到数据库的所有 Client 端断开连接。这有助于确保 Client 端维护副本集的准确视图。

因为断开连接包括用于运行方法的连接,所以如果方法成功完成,则无法检索方法的返回状态。如果错误,则只能检索该方法的返回状态。在脚本中运行方法时,脚本应解决此问题。

降压期间的写入

Note

从接收到rs.stepDown()方法开始的时间段内,所有对主数据库的写入都会失败,直到选择了新的主数据库,或者如果没有可选举的辅助数据库,则原始主数据库将恢复正常操作。写入失败的时间最多为:

secondaryCatchUpPeriodSecs(默认为 10 秒)electionTimeoutMillis(默认为 10 秒)。

Election Handoff

在版本 3.6.7 中进行了更改:如果参数enableElectionHandoff为 true(默认值),则当主节点从rs.stepDown()降级(或没有force: truereplSetStepDown命令)时,降级的主节点将提名合格的辅助节点立即选举。否则,次要人员最多可以 awaitsettings.electionTimeoutMillis才能进行选举。降级的主服务器不 await 切换的效果。有关更多信息,请参见enableElectionHandoff