mongodb集群分片的数据查询的时候变慢,db.collection.find()不设置条件的查询几乎查不出来,通过检查集群中各分片服务器的状态,发现一台机器状态为recoving。通过 db.printReplicationInfo()命令查看该节点复制数据的情况,发现与其他节点不同步。
解决办法:1、停掉该节点mongodb服务(arbiter节点的mongodb服务也停掉),删除该节点数据存储的目录下的数据,在重新开启mongodb服务(先开启异常节点mongodb服务,再开启arbiter服务)异常节点将重新复制数据到自身节点。状态将由原来的recovering变成startupp,通过rs.status()命令可以看到uptime在不断更新 数据带不断被复制。
待数据同步完成,startup2状态自动别更为secondary。
解决办法2:删除该节点下的数据,并从其他节点复制完整的数据到该节点,需将local一并复制。。。。