【问题标题】:MongoDB datasize showing differences in show databases and DBPathMongoDB 数据大小显示显示数据库和 DBPath 的差异
【发布时间】:2017-11-23 06:31:05
【问题描述】:
我们的 MongoDB 是使用副本集创建的,并且由于某种原因节点已关闭。现在启动后它没有启动/无法找出主要和次要。从日志中我们观察到了这个错误。
“[rsSync] 在当前 replset 中找不到有效的同步源来进行初始同步”
无法将其他节点提升为主节点,因为该命令需要从主数据库运行。谁能建议一种方法来启动节点。
此外,我们注意到 show databases 命令和 DBPath 的大小显示大小差异。是否有任何后端机制正在运行以将数据压缩在数据库中(例如压缩文件系统中的数据),或扩展文件系统中的数据?请就此提出建议。
【问题讨论】:
标签:
mongodb
mongodb-replica-set
【解决方案1】:
选择一个节点并通过删除replSet 参数将其启动到维护模式。使用mongo 登录到该节点并使用use local 选择本地数据库。更新 db.system.replset collectios members 以仅具有该节点地址。使用replSet 参数重新启动您的节点,您现在拥有一个运行PRIMARY 的节点副本集。现在您可以一一添加其他节点,节点将执行initial sync
进行初始同步的其他节点将仅自动复制(并压缩,如果您使用wiredTiger)当前数据。拥有两个健康的辅助节点后,您可以在该节点上开始初始同步,它将以与其他节点相同的方式压缩其数据。 (您可以通过销毁 dbPath 上的数据来启动初始同步)