我的mongodb版本是3.2.4。 我有一个带有2个数据库节点和1个仲裁器的replicaSet。 所有数据库在我的客户站点上都运行良好很长时间。有一天,主要数据库因维护而被关闭。大约2个小时后,-the-primary被重新启动,并再次成为主数据库,并且辅助数据库处于回滚状态。 关于上述情况,我有几个问题: 当主数据库第一次被关闭时,如果有数据库条目没有同步到辅助数据库,会发生什么? 当失败的主要再次恢复时,它是否成为主要的方式?在再次成为主数据库之前,它是否与now-primary-was-secondary数据库同步? 在给定最新的主要和辅助数据库状态的情况下,如何在rollback文件夹中恢复丢失的数据? 谢谢和问候。
答案 0 :(得分:0)
如果要关闭主服务器以进行维护,则必须在主服务器上执行rs.stepDown()命令。这将选择另一个DB节点成为主要节点:
如果你做了正确的stepDown,你所处的回滚状态似乎不正常。这是应用回滚的一个很好的链接: https://scalegrid.io/blog/how-to-recover-from-a-mongodb-rollback/
答案 1 :(得分:0)
Rick写了很好的答案,但没有回答你的上一个问题......如果发生回滚,你的dbpath下会有rollback-directory。在该目录中,您可以在特定于数据库列的json文件中找到所有回滚文档。这些文件可以mongoimport回到主要文件......