说明
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()方法尝试终止长时间运行的区块主节点 (primary node in the replica set)降级的用户操作,例如索引构建、写入操作或map-reduce作业。
合格从节点的可用性
然后,此方法然将启动一个追赶期,等待 secondaryCatchUpPeriodSeconds(默认为 10 秒),以便从节点与主节点保持同步。仅当从节点在追赶期间与主节点保持同步时,主节点才会降级,防止回滚。
如果在等待期结束时没有可选的从节点满足此标准,则主节点不会降级,且该方法出错。
主节点成功降级后,该节点在 stepDownSecs 时间段的剩余时间内将无法成为主节点,该时间段从节点收到该方法时开始。
客户端连接
rs.stepDown() 方法不会关闭所有客户端连接。
降级期间的写入
注意
从收到 方法开始,直到选出新的主节点 (primary node in the replicars.stepDown() set),或者如果没有可选举的从节点,则原始主节点 (primary node in the replica set)恢复正常操作,所有对主节点 (primary node in the replica set)的写入都会失败。
rs.stepDown()运行 时正在进行的写入将被终止。进行中的事务也会失败并显示 TransientTransactionError,并且可以作为一个整体进行重试。
写入失败的时间段最长为:
secondaryCatchUpPeriodSecs (默认为 10 秒)+ electionTimeoutMillis(默认为 10 秒)。
选举交接
当您使用 或 降级主节点 (primary noders.stepDown()replSetStepDown in the replica set)而未将force 字段设置为true 时,降级的主节点 (primary node in the replica set)会指定一个符合条件的从节点(secondary node from replica set)来立即进行选举。