2014-02-21 48 views
0

我在MongoDB中有3个成员replicaSet,当重新配置服务器实例的主机名时崩溃了。我不得不重新配置replicaSet,但我很好奇MongoDB如何处理所有成员中未同步的记录。当你重新配置mongodb replicaset时,你会丢失记录吗?

案例1)我访问MongoDB服务器时有一个新记录来重新配置集合。
情况2)在另一个MongoDB服务器上有一个新记录,该记录稍后添加到副本集中。

回答

1

每个副本集有一个主节点和一个或多个辅助节点。

全部写在小学上。然后,主要将这些更改发送给次级(更改列表被称为“oplog”)。这意味着主要人员始终是具有最新数据的成员。

当主服务器突然无法访问时,副本集将进入只读模式,并发生选举以查找新的主服务器。通常会选择最新的辅助资料(有关replica-set election的更多详细信息)。任何不传播给该次要的写入都会丢失。

当旧的主节点恢复联机时,它将副本集作为辅助节点重新加入。其数据被同步到新的主要状态。只有在旧主节点上发生的任何写入都不会在崩溃前传播到新主节点。

回滚的写入备份为BSON,目录中的文件/rollback,并且可以重新添加到使用bsondumpmongorestore副本集。有关这一过程的详细信息可以在文章Rollbacks During Replica Set Failover

+1

老写不会丢失他们被分解断成手动合并的文件中找到,otherwsie称为回滚方案 – Sammaye

+2

这可能是值得的参考会发生什么[ **回滚**](http://docs.mongodb.org/manual/core/replica-set-rollbacks/)的情况。 –

+0

@NeilLunn heh的确如此 – Sammaye

相关问题