如果mongodb故障转移发生在复制尚未完成时会发生什么

时间:2013-09-15 14:16:01

标签: mongodb replication failover

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

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

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

非常感谢。

1 个答案:

答案 0 :(得分:2)

  

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

不允许写入

  

自动故障转移选择一个辅助数据库作为新主数据库,这些数据如何被复制呢?

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

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

  

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

你可以在大多数情况下使用w=majority,但是在边缘情况下仍然会有一些无法处理的陷阱,例如,如果主要事件在写入可以传播给其他成员之前进行故障转移。