对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

replSetStepDown(数据库命令)

replSetStepDown

指示副本集的主节点 (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 秒)才能从节点同步。 一旦有可选的从节点可用,该命令就会降级主节点。

一旦降级,原来的主节点将成为从节点,并且在 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 } )