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
退出主节点时,已退出的主节点会立即提名符合条件的从节点进行选举。