mongodb replication set 主从切换

今天被问到mongodb副本集主从切换的问题,而后发现没有相关命令的中文文档,这里翻译记录一下node

rs.stepDown()mongodb

 

rs.stepDown(stepDownSecs, secondaryCatchUpPeriodSecs)数据库

指示副本集的主节点(primary node)成为从节点(secondary)。在主节点结束后,合格的从节点将会举行选举。服务器

该方法不会当即结束主节点。若是从节点中没有与主节点保持同步的节点,则主节点会等待secondaryCatchUpPeriodSecs(默认为10秒)以便从节点遇上。一旦出现可选择的从节点,该方法就会降级主节点。翻译

一旦降级,原来的主节点成为从节点的,而且再也不有资格在stepDownSecs指定的剩余时间内再次成为主节点。索引

 

注意文档

该方法仅对主节点有效,若是在非主节点上运行,则会引起错误。同步

 

执行过程:io

rs.stepDown()方法尝试终止长时间运行的用户操做,由于这些操做会阻止主服务器降级,如索引构建,写入操做或map-reduce做业。map

而后该方法启动一个追赶期,在此期间会等待SecondaryCatchUpPeriodSeconds所指定的时间(默认为10秒),使从节点追上主节点,变为最新。主节点只有在从节点追上主节点的时候才会进行降级操做,以此来防止回滚。

若是在等待期结束时没有从节点符合此标准,则主节点不会降级,而且抛出方法错误。

一旦主节点降级成功,该节点就不能在stepDownSecs所指定的时间内再次成为主节点,这个时间从节点开始接收到方法开始。 rs.stepDown()方法强制当前链接到数据库的全部客户端断开链接。这有助于确保客户端与副本集维持一个的准确视图(view)。

因为断开链接包括用于运行方法的链接,所以若是方法成功完成,则没法检索方法的返回状态。若是错误发生,您只能检索方法的返回状态。在脚本中运行该方法时,脚本应考虑此行为。

注意

在接收到rs.stepDown()方法开始的时间段内,全部写入主节点的写入操做都会失败,直到选出新的主节点或者没有可用的从节点为止,原来的主节点才会恢复正常操做。写入失败的时间最长:

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

 

 

原文地址:https://docs.mongodb.com/manual/reference/method/rs.stepDown/

相关文章
相关标签/搜索