robo t3连接mongodb replica set问题

背景

搭建一个mongodb集群之后,想用robo 3t进行可视化操作时,在连接集群的时候出现两个问题导致无法连接。故记下解决办法。

robo 3t连接配置

connetion部分:

注:IP为非真实,只是为了说明问题而已。

authentication部分:

操作过程

  1. 按照上面的配置,点击Test按钮之后出现下面的报错。

查看详细报错为:

问题排查过程

1.首先使用命令验证是否是集群的问题。

mongo 
mongodb://testDB:8749.11[dk@101.198.142.156:1234,101.198.142.157:1234,101.198.142.158:1234,101.198.142.159:1234,101.198.142.160:1234/testDB/replicaSet=bcats_test

发现是可以正常连接的,但是警告101.198.142.156:1234,101.198.142.157:1234拒绝连接。

2.怀疑是robo 3t的问题,然后利用错误信息到google和百度搜索。

Cannot connect to replica set "offline"[101.198.142.156:1234]. 
Set's primary is unreachable

Failed to initialize MongoWorker. Reason: connect failed

找到一个相关的stackoverflow博客:https://stackoverflow.com/questions/64545942/robomongo-cannot-connect-to-replica-set-sets-primary-is-unreachable。 但是说是srv的问题或者说是robo版本的问题,但是经过下面的继续排查,发现不是。

  1. 调换下机器的顺序:

    发现可以登录。

  2. 查找关于mongodb的replica set的设计思路。
    发现这个就相当与主从框架,可以单个机器登录。

  3. 单个机器登录,发现:
    101.198.142.156这个机器没有testDB这个用户。(为啥没挂,却没有同步数据,这个还在查找中)
    101.198.142.157这个机器挂了。

  4. 解决办法。
    将主机器的配置同步到101.198.142.156、101.198.142.157即可。然后还原到之前的机器顺序,可以连接了。

结论

robo 3t在连接mongodb replica set的集群时,会根据第一个机器的状态判断是否能够连接成功,如果第一个能够连接失败则无法连接成功。

posted @ 2022-06-21 21:15  Myuniverse  阅读(1052)  评论(0编辑  收藏  举报