配置mongodb副本集时是否会丢失记录?

时间:2014-02-21 12:11:17

标签: mongodb replication database-replication

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

案例1)MongoDB服务器上有一条新记录,我可以访问该记录来重新配置该组 情况2)另一台MongoDB服务器上有一条新记录,稍后会添加到副本集中。

1 个答案:

答案 0 :(得分:1)

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

所有写入都发生在主数据库上。然后,主服务器将这些更改发送到辅助服务器(更改列表称为“oplog”)。这意味着主数据库始终是具有最新数据的成员。

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

当旧主服务器重新联机时,它会将副本集重新加入辅助服务器。其数据与新主数据库的状态同步。任何只发生在旧主服务器上的写入都会在回滚之前传播到新主服务器。

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