本系列文章翻译自《50 Tips and Tricks for MongoDB Developers》,暂时没有找到中文版,反正自己最近也在深入学习mongodb,所以正好拿来翻译一下。一方面加强自己学习的效果,另一方面让大 家也一起来体验一下需要我们这些mongodb使用者需要注意的地方。
首先声明自己的英文水平不是太高,加之有些英文翻译成中文也找不到合适的词来表达,所以在文章中可能会出现英文原词,或者说有些地方的翻译会有些生 硬,也就是说会出现直译的地方。翻译该书的主要目的是为大家学习探讨用的,如果有翻译不精准的地方,或者说有更加精准的翻译,还请大家指出,我会及时的更 正的,在此先谢过各位了。
Tip#20.Handle replica set failure and failover
处理复制集的故障和故障恢复
你的应用应该有能力处理复制集中遇到的所有可能的故障问题。
假设你的应用抛出一个“找不到master”的错误。有两个可能导致这个错误的原因。你的复制集可能正在进行故障恢复,恢复一个新的primary,你必须优雅的处理进行primary选择所花费的这段时间。这段时间会持续几秒钟,如果你倒霉的话,也有可能是30秒或者更多。如果你在网络分区的另一边,可能几个小时看不到master。
找不到master是一个很严重的问题,如果发生这种请求,你的应用是否能接受只读的模式。你的应用应该可以处理短期只读和长期只读。
不管是否存在master,你都应该继续提供读取的服务。
在primary选举阶段,服务器成员会经历简短的不可读,恢复阶段。在这个时期,如果驱动来读取数据,成员会抛出异常,找不到master和slave。