could not find host matching read preference { mode: \"primaryPreferred\" } for set shard"


  • V

    MongoDB Enterprise mongos> show dbs

    2017-02-15T08:35:06.873+0800 E QUERY    [main] Error: listDatabases failed:{
        "code" : 133,
        "ok" : 0,
        "errmsg" : "could not find host matching read preference { mode: \"primaryPreferred\" } for set shard3"
    } :
    _getErrorWithCode@src/mongo/shell/utils.js:25:13
    Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
    shellHelper.show@src/mongo/shell/utils.js:755:19
    shellHelper@src/mongo/shell/utils.js:645:15
    @(shellhelp2):1:1

    How to solve ? 

  • 大中华区MongoDB顾问

    默认情况下mongos会尝试连接到每个shard的primray结点进行读写操作,但mongos获取primary的方式是通过配置中的服务器地址,获取其中的rs.status()中的所有hostname,然后连接这些hostname。所以以下两个问题需要检查:

    1. 是否shard3确实没有primary了(是否已经有半数以上的结果down)

    2. primary在rs.status()中的hostname是否能够被mongos解析。(如有必要可以通过加hosts记录的方式解决)


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待