Mongodb:Primary关闭了一天,发现旧数据不同步,当前数据同步



我有一个mongodb副本集,其中有一个主副本和两个辅助副本,由于一些操作系统问题,主副本已停机一天。然后其中一名中学生当选为小学生。将该辅助设备用作主设备并在应用程序中使用。一天后,旧的主要出现了,目前它正在用作次要。似乎只有当前数据在更新,而不是与停机日的数据同步。有没有办法知道,它是在后台同步?如果不同步,我该怎么办?我需要将旧的主数据再次转换为主数据,只有在所有数据都同步的情况下才能完成。

如果您的旧PRIMARY变为SECONDARY,这意味着它成功地从您的新PRIMARY复制了丢失的数据,只为在选举前存在于旧PRIMARY中的写操作(无法复制到新PRIMARY(设置例外。你可以在你的";回滚";文件夹中,如果需要重新插入或重新考虑,则需要查看这些bson文件并手动检查。

故障排除步骤如下:

  1. 使用检查当前replicaSet状态

    rs.status((

  2. 如果你有1个PRIMARY+2个SECONDARY,似乎一切都很好,你的成员与PRIMARY同步。

  3. 如果一些成员处于不同的状态,他们可能会初始化同步,您需要等待一段时间,直到进程完成或出现其他问题,因此您可能需要稍等。

  4. 如果由于某种原因,成员没有成功初始化同步,您可以强制执行新的初始化同步,以便他们从头开始尝试。

以下是启动初始化同步的简单步骤:

4.1.停止会员:

mongo --p XXX
use admin
db.shutdownServer()

4.2.进入数据文件夹并删除里面的任何内容:

cd /my_member_data_folder/
rm -rf *

4.3.再次启动成员,等待init sync并成功移动到SECONDARY状态。

mongod --config my_config_file.conf
  1. 如果一切正常,您只需要将replicaSet切换到旧的PRIMARY,您只需按如下方式重新配置该成员的优先级即可:

    newPRIMARY>var x=rs.conf()
    newPRIMARY>x.members[0].priority=10
    newPRIMARY>rs.reconfig(x)
    

假设成员[0]是旧的PRIMARY,并且其他成员具有优先级<10

相关内容

  • 没有找到相关文章

最新更新