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

replSetStepDown

在此页面上

  • 说明
  • 语法
  • 命令字段
  • 行为
  • 举例
replSetStepDown

指示副本集的主节点变为从节点。主节点降级后,符合条件的从节点将进行主节点选举

该命令不会立即使主节点降级。 如果没有electable个从节点与主节点保持同步,则主节点需要等待secondaryCatchUpPeriodSecs (默认为 10 秒)才能从节点同步。 一旦有可选的从节点可用,该命令就会降级主节点。

一旦降级,原来的主节点将成为从节点,并且在 replSetStepDown: <seconds> 指定的剩余时间内没有资格再次成为主节点。

有关命令执行的详细说明,请参阅行为

注意

该命令仅对主节点有效,如果在非主节点上运行,则会引发错误。

提示

mongosh中,该命令也可以通过rs.stepDown()辅助方法运行。

助手方法对于mongosh用户来说很方便,但它们返回的信息级别可能与数据库命令不同。如果不追求方便或需要额外的返回字段,请使用数据库命令。

replSetStepDown只能在admin数据库上运行。

该命令具有以下语法:

db.adminCommand(
{
replSetStepDown: <seconds>,
secondaryCatchUpPeriodSecs: <seconds>,
force: <true|false>
}
)

该命令接受以下字段:

字段
类型
说明
replSetStepDown
数字

从主节点降级的时间(秒),在此期间,降级节点没有资格成为主节点。如果指定非数字值,该命令将使用 60 秒。

降级周期从 mongod 收到命令的时间开始。降级周期必须大于 secondaryCatchUpPeriodSecs

secondaryCatchUpPeriodSecs
数字

可选。 mongod等待可选举的辅助节点与主节点同步的秒数。

指定后, secondaryCatchUpPeriodSecs将覆盖默认等待时间(如果为10秒,则为force: true ,则为0秒)。

force
布尔

可选。 一个布尔值,用于确定在等待期内不存在可选举且是最新的从节点的情况下,主节点是否降级。

如果为true ,则即使不存在合适的从节点,主节点也会降级;如果存在复制延迟的从节点成为新的主节点,则可能会导致回滚

如果为false ,则在不存在合适的从节点成员的情况下,主节点不会降级,并且命令会返回错误。

默认值为 false

replSetStepDown命令尝试终止长时间运行的阻止主节点降级的用户操作,例如索引构建、写入操作或 map-reduce 作业。

然后,该命令会启动一个追赶期,等待secondaryCatchUpPeriodSeconds (默认为 10 秒),以便从节点与主节点保持同步。 仅当从节点在追赶期间与主节点保持同步时,主节点才会降级,以防止回滚。

如果在等待期结束时没有可选举的从节点满足此标准,则主节点不会降级,并且命令出错。 您可以覆盖此行为并发出带有force: true选项的命令以立即降级主节点。

主节点成功降级后,该节点在replSetStepDown: <seconds>时间段的剩余时间内无法成为主节点,该时间段从节点收到命令时开始。

replSetStepDown 命令不会关闭所有客户端连接。

注意

从收到replSetStepDown命令开始,直到选出新的主节点,或者如果没有可选举的从节点,则原始主节点恢复正常操作,所有对主节点的写入都会失败。

运行replSetStepDown时正在进行的写入将被终止。进行中的事务也会失败并显示TransientTransactionError ,并且可以作为一个整体进行重试。

写入失败的时间段最长为:

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

当您使用rs.stepDown()replSetStepDown降级主节点而未将force字段设置为true时,降级的主节点会指定一个符合条件的从节点来立即进行选举。

以下示例在当前主节点上运行,尝试让该节点降级120秒。

该操作等待默认10秒,以便从节点赶上。 如果不存在合适的从节点,则主节点不会降级,并且命令会出错。

注意

从收到replSetStepDown命令开始,直到选出新的主节点,或者如果没有可选举的从节点,则原始主节点恢复正常操作,所有对主节点的写入都会失败。

运行replSetStepDown时正在进行的写入将被终止。进行中的事务也会失败并显示TransientTransactionError ,并且可以作为一个整体进行重试。

写入失败的时间段最长为:

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

db.adminCommand( { replSetStepDown: 120 } )

以下示例在当前主节点上运行,尝试让节点降级120秒,最多等待15秒以使可选举的辅助节点同步。 如果不存在合适的从节点,则主节点不会降级,并且命令会出错。

注意

从收到replSetStepDown命令开始,直到选出新的主节点,或者如果没有可选举的从节点,则原始主节点恢复正常操作,所有对主节点的写入都会失败。

运行replSetStepDown时正在进行的写入将被终止。进行中的事务也会失败并显示TransientTransactionError ,并且可以作为一个整体进行重试。

写入失败的时间段最长为:

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

db.adminCommand( { replSetStepDown: 120, secondaryCatchUpPeriodSecs: 15 } )

以下示例在当前主节点上运行,尝试让节点降级120秒,最多等待15秒以使可选举的辅助节点同步。 由于有force: true选项,即使不存在合适的从节点,主节点也会降级。

注意

从收到replSetStepDown命令开始,直到选出新的主节点,或者如果没有可选举的从节点,则原始主节点恢复正常操作,所有对主节点的写入都会失败。

运行replSetStepDown时正在进行的写入将被终止。进行中的事务也会失败并显示TransientTransactionError ,并且可以作为一个整体进行重试。

写入失败的时间段最长为:

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

db.adminCommand( { replSetStepDown: 120, secondaryCatchUpPeriodSecs: 15, force: true } )

提示

另请参阅:

← replSetResizeOplog