1. ホーム
  2. mongodb

[解決済み] mongodb Failed: error connecting to db server: no reachable servers

2022-02-17 02:10:12

質問

Ubuntu14.04のサーバーにmongodbをインストールしました。

mongoimportやmongodump、mongostatなどでmongodbに接続することができません。常に "no reachable server" と表示されます。

mongoimport --db test --collection restaurants --drop --file dataset.json
2015-08-25T13:08:29.802+0800    [........................] test.restaurants 0.0 B/11.3 MB (0.0%)
2015-08-25T13:08:30.306+0800    Failed: error connecting to db server: no reachable servers
2015-08-25T13:08:30.306+0800    imported 0 documents

どうにか、mongoのシェルに接続できました。

mongo --port 27017
MongoDB shell version: 3.0.6
connecting to: 127.0.0.1:27017/test

最初はiptablesが原因かと疑ったので、iptablesのルールを全てフラッシュし、全てのacceptに対してルールを作りましたが、やはり同じでした。

 sudo iptables -S
    -P INPUT ACCEPT
    -P FORWARD ACCEPT
    -P OUTPUT ACCEPT
    -A INPUT -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A FORWARD -j ACCEPT
    -A OUTPUT -j ACCEPT
    -A OUTPUT -o lo -j ACCEPT

スタックオーバーフローやグーグルで検索したところ、誰かが bind_ipを0.0.0.0に設定したり、いろいろ試したのですが、やはりダメでした。

以下は私のmangodbの設定ですが、どなたかチェックするのを手伝っていただけませんか? あなたの助けをありがとうございます

james@localhost:~$ cat /etc/mongod.conf 
# mongod.conf

# Where to store the data.

# Note: if you run mongodb as a non-root user (recommended) you may
# need to create and set permissions for this directory manually,
# e.g., if the parent directory isn't mutable by the mongodb user.
dbpath=/var/lib/mongodb

#where to log
logpath=/var/log/mongodb/mongod.log

logappend=true

port = 27017

# Listen to local interface only. Comment out to listen on all interfaces. 
#bind_ip = 127.0.0.1
# Disables write-ahead journaling
# nojournal = true

# Enables periodic logging of CPU utilization and I/O wait
#cpu = true

# Turn on/off security.  Off is currently the default
#noauth = true
#auth = true

# Verbose logging output.
verbose = true

# Inspect all client data for validity on receipt (useful for
# developing drivers)
#objcheck = true

# Enable db quota management
#quota = true

# Set oplogging level where n is
#   0=off (default)
#   1=W
#   2=R
#   3=both
#   7=W+some reads
#diaglog = 0

# Ignore query hints
#nohints = true

# Enable the HTTP interface (Defaults to port 28017).
#httpinterface = true

# Turns off server-side scripting.  This will result in greatly limited
# functionality
#noscripting = true

# Turns off table scans.  Any query that would do a table scan fails.
#notablescan = true

# Disable data file preallocation.
#noprealloc = true

# Specify .ns file size for new databases.
# nssize = <size>

# Replication Options

# in replicated mongo databases, specify the replica set name here
#replSet=setname
# maximum size in megabytes for replication operation log
#oplogSize=1024
# path to a key file storing authentication info for connections
# between replica set members
#keyFile=/path/to/keyfile

解決方法は?

一時的な回避策としては host パラメータを mongoimport の呼び出しで、ホストが自分のマシンであることを mongo に知らせます ( 127.0.0.1 ):

mongoimport --host=127.0.0.1

あなたの場合、完全なコマンドは、次になります。

mongoimport --host=127.0.0.1 \
  --db test --collection restaurants --drop --file dataset.json

(出典 ranjeetcao @ mongorestore Failed: 到達可能なサーバーがありません。 )


更新しました。

Mongo >= 3.0.7にアップデートすると解決するはずです

(出典 Colin Marshall @ mongorestore Failed: 到達可能なサーバーがありません。 )


アップデート2

バグが発生したようです は、まだ一部のユーザーで発生しています .

また、JIRAのオープンイシューもあります。 こちら .

(出典 ジェームス・チエン@この質問スレ )


アップデート3:

場合によっては、MongoがReplicaSetとして動作していることが原因であることもあります。これを解決するには、私が見た限りでは ReplicaSet 機能を無効にするか、リセットする方法があります。参照してください。

(出典 Maxim Yefremov @ mongorestore 失敗: 到達可能なサーバーがありません。 )