我打算在mongodb中进行复制过程,它具有自动故障转移的功能。我试图以图片格式提出问题。
我的问题是如果失败的服务器在故障转移后重新联机会发生什么?这似乎是数据库中的常见做法。这部分对我来说是全新的,请分享您的建议吗?
答案 0 :(得分:3)
在我们跳到答案之前,将设置一些背景:
现在回答你的问题,它回来时的主要状态是什么。答案将取决于失败前的主要状态。以下可能是两种情况:
案例1.初级即将失败,具有最新的变化。此外,至少有一个辅助设备有最新的更改。现在主要失败。具有最新变化的次要将成为主要的。它将从mongos或驱动程序中进行所有更改。现在如果早期的主要回来怎么办?这将是次要的。并将根据上述第2点进行同步。
案例2.初级即将失败,具有最新的变化。并且所有次要因为几次变化而落后于初级。现在主要失败。在这种情况下,新当选的主要人员不会有最新的更改。但它假设它有最新的变化。并且它开始表现得如此。现在,如果早期的主要回来,它将是次要的。它会意识到它的oplog也落后了。落后是因为变化发生了。提前,因为它有一些未在其他服务器上复制的更改。因此,它将消除使其领先的变化。它将使用oplog进行此过程。此过程称为回滚。但在回滚之前,它将记录系统回滚文件中的还原更改。现在它没有领先。但落后于其他人。并将根据上面提到的第2点进行自我同步。需要注意的是,管理员必须手动应用系统回滚文件中的更改。回滚详细信息可在以下位置找到:http://docs.mongodb.org/manual/core/replica-set-rollbacks/