有没有办法让副本集的辅助成员处于被动状态而不会降低临时断开所有客户端的副本集?我问的原因是我们从辅助副本集成员进行备份,因此在运行备份时我不希望该成员成为主要成员因此我有一个脚本可以更改此优先级成员为零,我们调用rs.reconfig()。不幸的是,这会导致临时中断,直到客户端重新连接。备份完成后,我更改成员的优先级并再次调用rs.reconfig()。有没有其他方法可以做到这一点而不会造成任何中断?
谢谢, 理查德。
答案 0 :(得分:1)
您可以在运行备份的辅助服务器上运行rs.freeze(...)
,而不是重新配置副本集。冻结的二级学生在指定期间内没有资格成为小学。
备份完成后,您可以在辅助设备上运行rs.freeze(0)
以解冻备份。
需要考虑的注意事项:
您应该确保副本集中有足够的数据承载节点,以确保在备份运行时仍可以进行故障转移。例如,如果您有一个带有主/辅助/仲裁的三节点副本集,那么冻结辅助节点会有风险,除非您真的更喜欢中断而不是故障转移(以及中断的备份)。
您应该提供rs.freeze()
的秒数,这个秒数比预期的备份时间长(但不会过长),因此次要不会意外地冻结很长一段时间如果备份过程没有正确完成或解冻辅助过程。
根据您当前的备份策略,这可能是不必要的。例如,如果您使用filesystem snapshots,则流程应该很快完成。