![如何完全删除 mongoDB 副本集?](https://linux22.com/image/789319/%E5%A6%82%E4%BD%95%E5%AE%8C%E5%85%A8%E5%88%A0%E9%99%A4%20mongoDB%20%E5%89%AF%E6%9C%AC%E9%9B%86%EF%BC%9F.png)
我有一个包含 4 个不同副本集的 mongoDB 集群。最近有 2 台机器崩溃,无法恢复,数据全部丢失。遗憾的是,这两台主机上只安装了 1 个副本集。
我面临的问题是,配置仍然表明某些数据位于此副本集主机上,并且当客户端应用程序尝试从恰好在这些机器上有块的集合中读取时,它会返回此错误:
找不到与设置 replicaSetShardServer4 匹配的读取首选项 {模式:“primary”} 的主机
这是有道理的,因为那两台服务器已经不存在了。
所以我想找到一种方法来从配置中删除这些服务器,但我正在寻找的每个过程都提到连接到副本集的主节点并删除分片,而我无法做到这一点,因为那时这些主机又消失了。
答案1
更改配置文件和注释行
replication:
replSetName: ...
重启 Mongo 服务。连接到节点并删除local
数据库。
db.getSiblingDB('local').dropDatabase()
通过这种方式,您可以将 ReplicaSet 恢复为独立的 MongoDB。之后,您可以再次配置 ReplicaSet,请参阅:将独立 mongod 转换为副本集
另请查看从 MongoDB 备份恢复副本集,该过程与您的情况所需的过程相同 - 除了第一步“获取备份 MongoDB 数据库文件”之外 - 当然,这一步不是必需的。