如何使Mongodb复制集成为master



最近,由于一个未知问题,我们在GCP计算虚拟机上托管的MongoDB已经停止,我们无法重新启动它,因为它正在抛出MongoDB。找不到服务。因此,我们在对DB路径中的所有.wt文件进行备份后,重新安装了MongoDB。一旦我们重新安装了MongoDB,我们就将文件复制回来,但在DB中看不到数据。我们尝试了--repair标志,但仍然没有用。有没有办法让它发挥作用?

另一件事是,我们已经拍摄了崩溃前一天的虚拟机快照。只有运行rs.slaveOk((方法,我们才能在MongoDB中看到数据。我认为我们不能将该DB用作主数据库。有没有一种方法可以将其用作主数据库。

我对副本集的概念相对陌生,主/从任何建议和问题都欢迎

感谢

如果您使用rs.slaveOk((从快照中看到数据,则很容易恢复,您可以通过以下步骤将成员重新配置为独立的PRIMARY:

  1. 获取当前配置:

    cfg = rs.conf()
    printjson(cfg)
    
  2. 在临时变量cfg中仅设置可用成员(在本例中,它是cfg中id为0的第一个成员(:

    cfg.members = [cfg.members[0]]
    
  3. 仅使用可用成员重新配置replicaSet:

    rs.reconfig(cfg, {force : true})
    

    (不要忘记添加{force:true}选项,因为这是从SECONDARY重新配置的唯一方法(

  4. 如果这个成员一切都好,并且它成功地选为PRIMARY,你可以用rs.add((…添加其他新成员

最新更新