如果MongoDB故障转移发生在复制尚未完成时怎么办



我是mongodb的新手,我有一个问题:

我正在设置一个mongoDB测试环境,有一个mongos,3个conf服务器,2个分片(3个服务器作为分片的复制集)假设,由于复制有很大的滞后(例如辅助复制正在备份,或网络问题,或者发生其他事情。在此期间,主服务器关闭,会发生什么?自动故障转移选择一个辅助数据库作为新的主数据库,这些数据是否已经复制?

我们会丢失数据吗?如果是这样,我们如何做才能取回数据以及需要做什么,以避免此类问题。

多谢。

在此期间,主服务器关闭,会发生什么?

不允许写入

自动故障转移选择一个辅助数据库作为新的主数据库,这些数据是否已经复制?

如果数据没有从主数据库复制到辅助数据库,然后成为主数据库,则当主数据库作为辅助数据库返回到集合中时,将发生回滚: http://docs.mongodb.org/manual/core/replica-set-rollbacks/

当然,是否丢失数据取决于写入是否转到日志和/或数据文件,以及成员是刚刚离开集合还是崩溃。如果成员在写入可以进入日志之前崩溃,那么写入可能会丢失,是的。

我们如何做才能取回数据以及需要做什么,以避免此类问题。

在大多数情况下,您可以使用w=majority,但这在边缘情况下仍然存在某些无法解决的陷阱,例如,如果主节点在写入传播到其他成员之前进行故障转移等。

最新更新