1

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

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

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

多谢。

4

1 回答 1

3

这段时间,主服务器宕机了,会发生什么?

不允许写入

自动故障转移选择一个辅助数据库作为新的主数据库,这些数据还没有复制吗?

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

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

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

您可以w=majority在大多数情况下使用,但这仍然会在无法处理的边缘情况下存在某些缺陷,例如,如果主节点在写入可以传播给其他成员之前发生故障转移等。

于 2013-09-15T15:30:35.803 回答