replSetStepDown
¶指示副本集的主节点成为 辅助节点。小学选举结束后,合格的中学将举行小学选举。
该命令不会立即降级主要数据库。如果没有
electable
备用服务器与主服务器保持最新,则主服务器最多等待
secondaryCatchUpPeriodSecs
(默认情况下为10秒)以使备用服务器追赶。一旦可以选择的辅助服务器可用,该命令将降级主服务器。
降级后,原始的主要节点将成为辅助节点,并且在所指定的剩余时间内没有资格再次成为主要节点。replSetStepDown: <seconds>
有关命令执行的详细说明,请参见行为。
注意
该命令仅对主要对象有效,如果在非主要成员上运行,则会引发错误。
将replSetStepDown
只能在上运行的admin
数据库,并具有以下原型形式:
replSetStepDown
将以下字段作为参数:
领域 | 类型 | 描述 |
---|---|---|
replSetStepDown |
数 | 降级主节点的秒数,在此期间,降级成员不符合成为主节点的资格。如果指定非数字值,该命令将使用 降压周期从 |
secondaryCatchUpPeriodSecs |
数 | 可选的。该秒数 指定后,将 |
force |
布尔值 | 可选的。一个布尔值,用于确定在等待期内是否不存在可选举且最新的辅助节点,主要节点是否下台。 如果为 如果为 默认为 |
该replSetStepDown
命令尝试终止长时间运行的用户操作,这些操作会阻止主数据库降级,例如索引构建,写操作或映射减少作业。
然后,该命令将启动一个追赶期,在此期间,它最多等待
secondaryCatchUpPeriodSeconds
,默认情况下为10秒,以使辅助节点与主节点保持最新状态。仅当辅助数据库在追赶期间与主数据库保持最新时,主数据库才会降级,以防止回滚。
如果在等待期结束之前没有可选举的辅助节点满足此条件,则主要节点不会降级并且命令错误。您可以覆盖此行为,并通过命令立即发出命令,并选择立即退出主要服务器。force: true
一旦主节点成功降级,该节点就无法在该时段的剩余时间内成为主节点,该剩余时间在该节点收到命令后开始。replSetStepDown: <seconds>
从MongoDB 4.2开始,replSetStepDown
命令不再关闭所有客户端连接。
在MongoDB 4.0和更早版本中,replSetStepDown
命令在降级期间关闭所有客户端连接。因为断开连接包括用于运行命令的连接,所以如果命令成功完成,则无法检索命令的返回状态。如果错误,则只能检索命令的返回状态。在脚本中运行4.0及更早版本的命令时,脚本应解决此问题。
注意
在replSetStepDown
收到命令之前的这段时间内,所有对主数据库的写入都会失败,
直到选出新的主数据库,或者如果没有可选举的辅助数据库,则原始主数据库将恢复正常操作。
replSetStepDown
运行时正在进行的写入将被杀死。进行中的事务
也会失败,并显示“ TransientTransactionError”,并且可以整体重试。
写入失败的时间最多为:
secondaryCatchUpPeriodSecs
(预设为10秒)+
electionTimeoutMillis
(预设为10秒)。
在版本4.0.2中更改:如果参数enableElectionHandoff
为true(默认值),则当主要节点从rs.stepDown()
(或replSetStepDown
不带的命令)降级时,降级的主要节点将提名合格的辅助节点立即召集选举。否则,次要人员可以等到选举开始。降级的主服务器不等待切换的效果。有关更多信息,请参见
。force:
true
settings.electionTimeoutMillis
enableElectionHandoff
在当前主数据库上运行的以下示例尝试将成员降级120
几秒钟。
该操作最多等待默认10
秒数,以使辅助节点赶上来。如果不存在合适的辅助节点,则主节点不会降级并且命令错误。
注意
在replSetStepDown
收到命令之前的这段时间内,所有对主数据库的写入都会失败,
直到选出新的主数据库,或者如果没有可选举的辅助数据库,则原始主数据库将恢复正常操作。
replSetStepDown
运行时正在进行的写入将被杀死。进行中的事务
也会失败,并显示“ TransientTransactionError”,并且可以整体重试。
写入失败的时间最多为:
secondaryCatchUpPeriodSecs
(预设为10秒)+
electionTimeoutMillis
(预设为10秒)。
以下示例在当前主节点上运行,尝试将成员降级120
几秒钟,最多等待几秒钟,以15
使可选举的辅助节点赶上来。如果不存在合适的辅助节点,则主节点不会降级并且命令错误。
注意
在replSetStepDown
收到命令之前的这段时间内,所有对主数据库的写入都会失败,
直到选出新的主数据库,或者如果没有可选举的辅助数据库,则原始主数据库将恢复正常操作。
replSetStepDown
运行时正在进行的写入将被杀死。进行中的事务
也会失败,并显示“ TransientTransactionError”,并且可以整体重试。
写入失败的时间最多为:
secondaryCatchUpPeriodSecs
(预设为10秒)+
electionTimeoutMillis
(预设为10秒)。
以下示例在当前主节点上运行,尝试将成员降级120
几秒钟,最多等待几秒钟,以15
使可选举的辅助节点赶上来。由于该
选项,即使不存在合适的辅助节点,主节点也会降级。force: true
注意
在replSetStepDown
收到命令之前的这段时间内,所有对主数据库的写入都会失败,
直到选出新的主数据库,或者如果没有可选举的辅助数据库,则原始主数据库将恢复正常操作。
replSetStepDown
运行时正在进行的写入将被杀死。进行中的事务
也会失败,并显示“ TransientTransactionError”,并且可以整体重试。
写入失败的时间最多为:
secondaryCatchUpPeriodSecs
(预设为10秒)+
electionTimeoutMillis
(预设为10秒)。
也可以看看