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

rs.stepDown()

在此页面上

  • 说明
  • 兼容性
  • 行为
rs.stepDown(stepDownSecs, secondaryCatchUpPeriodSecs)

指示副本集的主节点 (primary node in the replica set)节点成为从从节点(secondary node from replica set)。 主节点 (primary node in the replica set)节点降级后,符合条件的从节点将进行主节点 (primary node in the replica set)节点选举。

该方法不会立即降级主节点。如果没有 electable 从节点与主节点保持同步,则主节点将等待 secondaryCatchUpPeriodSecs (默认为 10 秒)以便从节点同步。一旦有可选的从节点可用,该方法步骤就会降级主节点。

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

关于方法执行的详细解释,请参阅行为

注意

此方法仅对主节点有效,如果在非主节点上运行,则会抛出错误。

重要

mongosh 方法

本页面提供 mongosh 方法的相关信息。这不是数据库命令或特定语言驱动程序(例如 Node.js)的相关文档。

有关数据库命令,请参阅 replSetStepDown 命令。

如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。

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

Parameter
类型
说明

stepDownSecs

数字

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

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

secondaryCatchUpPeriodSecs

数字

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

指定后,secondaryCatchUpPeriodSecs 将覆盖 10 秒的默认等待时间。

此方法可用于以下环境中托管的部署:

  • MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本

  • MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本

rs.stepDown() 方法尝试终止长时间运行且阻塞主节点降级的用户操作,例如索引构建、写入操作或 map-reduce 作业。

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

如果在等待期结束时没有可选的从节点满足此标准,则主节点不会降级,且该方法出错。

主节点成功降级后,该节点在 stepDownSecs 时间段的剩余时间内将无法成为主节点,该时间段从节点收到该方法时开始。

rs.stepDown() 方法不会关闭所有客户端连接。

注意

从收到 rs.stepDown() 方法开始,所有对主节点的写入都会失败,直到选出新的主节点,或者如果没有可选的从节点,原始主节点将恢复正常操作。

运行 rs.stepDown() 时正在进行的写入将被终止。正在进行的事务也会失败并显示 TransientTransactionError,并且可以整体重试。

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

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

当您在未将 force 字段设置为 true 的情况下使用 rs.stepDown()replSetStepDown 退出主节点时,已退出的主节点会立即提名符合条件的从节点进行选举。

后退

rs.status

在此页面上