我们的MongoDB是使用replicaset创建的,由于某些原因节点出现故障。现在启动后它没有启动/无法找到主要和次要。从日志中我们发现了这个错误。 “[rsSync]在当前replset中找不到有效的同步源来执行初始同步” 无法将另一个节点作为主节点提升,因为该命令需要从主数据库运行。任何人都可以建议一种方法来启动节点。
另外,我们注意到的是show databases命令和DBPath的大小显示了大小的差异。是否有任何后端机制运行以保持数据库中的数据压缩(类似于压缩文件系统中的数据),或者扩展文件系统中的数据?请告知此事。
答案 0 :(得分:0)
选择一个节点并通过删除replSet
参数将其启动到维护模式。使用mongo
登录到该节点,然后选择use local
的本地数据库。更新db.system.replset
collectios members
以仅拥有节点地址。使用replSet
参数重新启动节点,现在您已经有一个节点副本集,其中PRIMARY正在运行。现在,您可以逐个添加其他节点,节点将执行initial sync
那些进行初始同步的其他节点将自动复制(并压缩,如果你使用wiredTiger)只有当前数据。拥有两个健康的辅助节点后,您可以在该节点上开始初始同步,并且它将以与其他节点相同的方式压缩它的数据。 (您可以通过销毁dbPath上的数据来启动初始同步)