让副本集成员被动无需断开客户端?
有没有办法让副本集的次要成员被动,而不会降低临时断开所有客户端的副本集? 我之所以问,是因为我们从辅助副本集成员进行备份,所以在备份运行时,我不希望这个成员可能成为主要成员,因此我有一个脚本来改变这个优先级成员为零,我们称之为rs.reconfig()。 不幸的是,这会导致临时中断,直到客户端重新连接。 一旦备份完成,我改变成员的优先级并再次调用rs.reconfig()。 有没有另一种方式做到这一点,而不会造成任何中断?
谢谢,理查德。
您可以在正在运行备份的辅助服务器上运行rs.freeze(...)
,而不是重新配置副本集。 冻结的中学将不具备在指定期间成为初级教师的资格。
备份完成后,您可以运行rs.freeze(0)
上的rs.freeze(0)
以解冻它。
注意事项:
您应该确保副本集中有足够的数据承载节点,以确保在备份运行时仍可以进行故障切换。 例如,如果您有一个带有主/辅助/仲裁器的三节点副本集,则冻结辅助节点将会很危险,除非您确实希望发生停机而不是故障切换(以及中断的备份)。
您应该提供rs.freeze()
的秒数,该时间比预期的备份时间段长(但不是过多),因此如果备份过程未完成,辅助服务器不会意外终止冻结一段时间正确或解冻中学。
根据您当前的备份策略,这可能是不必要的。 例如,如果您正在使用文件系统快照,则该过程应该很快完成。
上一篇: make replica set member passive without disconnecting clients?