web-dev-qa-db-ja.com

MongoDB ---グローバル初期化の失敗: "/var/log/mongodb/mongod-config.log"を開けませんでした

Mongodb shardingの構成サーバーをセットアップしようとしています。 /var/log/mongodb/mongod-config.logにログを記録するように設定された特定の構成ファイルを作成しました。

mongod --config <path-to-config-file>を実行すると、次のエラーが発生します。

`F CONTROL  [main] Failed global initialization: FileNotOpen: Failed to open 
"/var/log/mongodb/mongod-config.log"`

同じコマンドをSudoを指定して実行すると、コマンドは実行されますが、出力がありません。

しかし、設定ファイルで指定されたポート(27019)でmongo Shellを起動しようとすると、次のようになります。

MongoDB Shell version v3.6.4
connecting to: mongodb://127.0.0.1:27019/test
2018-05-01T03:13:13.399+0000 W NETWORK  [thread1] Failed to connect to 
127.0.0.1:27019, in(checking socket for error after poll), reason: Connection 
refused
2018-05-01T03:13:13.400+0000 E QUERY    [thread1] Error: couldn't connect to 
server 127.0.0.1:27019, connection attempt failed :
connect@src/mongo/Shell/mongo.js:251:13
@(connect):1:6
exception: connect failed

MongoDBシャーディングのドキュメント

私はここで以前のいくつかの投稿を見てきましたが、1つは 同じ問題 でした。解決策はありませんが、もう一度やり直して、解決策があるかどうかを確認したいと思います。

何かを見逃したのか、問題が何かはわかりません...

6
rapidDev

それで、私は自分自身の質問を理解しました。

まず、問題は、構成サーバーに別のポート27019を使用していたため、ファイアウォールからそのポートを開く必要があったことです。

次に、設定ファイルのdbPath/var/lib/mongodbから/data/dbに変更しました。これは、mongodbがデータを保存するためのデフォルトパスだからです。

後で必ずSudo service mongod restartを実行してください。

これで、特定の構成ファイルでmongodを起動できました。

Sudo mongod --config <path-to-config-file>

重要なのは、Sudoを含めることです。それは問題を解決しました:

F CONTROL  [main] Failed global initialization: FileNotOpen: Failed to open 
"/var/log/mongodb/mongod-config.log"

コマンドを実行した後、mongodが仮想マシン(vm)で起動したことがわかり、次のようにして、別のマシンから上記のvmのmongoシェルに接続できます。

mongo <ip_address_of_said_vm>:27019
3
rapidDev

独自のディレクトリに独自のlogFileを作成する必要があります。既存のmongod.logは使用できません。 MongoDBインストールに付属のmongod.logファイルに書き込もうとすると、Failed to OpenおよびAccess is Deniedが表示されます。

WindowsラップトップでMongoを実行している場合は、次のようなコマンドで開始する必要があります。

mongod --dbpath "C:\Program Files\MongoDB\Server\4.2" --logpath "C:\MongoData\data.log"

ここで、C:\MongoData\data.logは、新しいディレクトリに作成した空のファイルです。

1
Steve Stilson

デフォルトでは、MongoDBはこのパス/var/log/mongodb/mongodb.logにログファイルを作成します。ログファイルが見つからない場合は、MongoDB構成ファイルを確認してください。

logpath

/etc/mongod.confまたは/yourMongoDBpath/mongod.confのMongoDB構成ファイルを確認します。

/etc/mongod.conf

$ cat /etc/mongod.conf#mongod.conf

データを保存する場所。

注:root以外のユーザーとしてmongodbを実行する場合(推奨)、たとえば、親ディレクトリがmongodbユーザーによって変更できない場合は、このディレクトリの権限を手動で作成および設定する必要がある場合があります。

dbpath=/var/lib/mongodb

ログする場所

logpath=/var/log/mongodb/mongod.log

...

ここでは、dbpathlogpathを含む1つのmongod.confファイルについて言及しています。そして、mongodサーバーとmongoシェルを起動する方法をここに示します。

sharding:
  clusterRole: configsvr
replication:
  replSetName: repltest
security:
  keyFile: /var/mongodb/pki/replkeyfile
net:
  bindIp: localhost,192.168.103.100
  port: 26001
systemLog:
  destination: file
  path: /var/mongodb/db/csrs1/mongod.log
  logAppend: true
processManagement:
  fork: true
storage:
  dbPath: /var/mongodb/db/csrs1
~       

次に、--godでmongodを起動するには、次のようなコマンドを使用します。

/var/mongodb/db/csrs1$ mongod -f csrs1.conf

子プロセスをフォークし、サーバーが接続できるようになるまで待機します。フォークされたプロセス:2101子プロセスが正常に開始され、親が終了しました

モンゴシェルを起動するには

mongo --port 26001

エラー here および here に関連する一部のMongoDB jiraブログ。

さらにあなたの参照 here および here

1

Debian9 64ビットサーバーでmongodbサービスを開始しようとしたときにも、同じ問題に直面しました。状態を確認しながら以下の情報を確認できました。

:~# systemctl status mongod.service
● mongod.service - High-performance, schema-free document-oriented database
   Loaded: loaded (/etc/systemd/system/mongod.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2019-02-22 14:52:17 CET; 11s ago
     Docs: https://docs.mongodb.org/manual
  Process: 20914 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=1/FAILURE)
 Main PID: 20914 (code=exited, status=1/FAILURE)

Feb 22 14:52:17 server-test systemd[1]: Started High-performance, schema-free document-oriented database.
Feb 22 14:52:17 server-test mongod[20914]: 2019-02-22T14:52:17.650+0100
F CONTROL  [main] Failed global initialization: FileNotOpen: Failed to open "/var/log/mongodb/mongod.log"
Feb 22 14:52:17 server-test systemd[1]: mongod.service: Main process exited, code=exited, status=1/FAILURE
Feb 22 14:52:17 server-test systemd[1]: mongod.service: Unit entered failed state.
Feb 22 14:52:17 server-test systemd[1]: mongod.service: Failed with result 'exit-code'.

各開始コマンドの結果の詳細情報も"/var/log/daemon.log"で取得しています。問題の手掛かりの1つである"Failed global initialization: FileNotOpen: Failed to open "/var/log/mongodb/mongod.log"の情報を見ることができました。チェック中に、mongod.logファイルがルートの所有権の下にあり、サービスがユーザー「mongodb」の下で開始されていることがわかりました。したがって、以下の修正を適用しました。

fix1: -  chown mongodb:mongodb /var/log/mongodb/mongod.log

もう一度開始しようとすると、今回は「daemon.log」に新しいエラーを示すサービスが表示されました

mongod.service: Main process exited, code=exited, status=100/n/a
mongod.service: Unit entered failed state.

このエラーは、mongodbファイルの保存場所に問題があり、そのファイルにアクセスできないために発生しました。

fix2.  chown -R mongodb:mongodb /var/lib/mongodb/*

添付のスクリーンショットを参照してください。これでサービスを開始できます。

enter image description here

0
nisamudeen97

Windows OSでも同じ問題がありました。問題はファイルの許可でした。次に、「C:\ Program Files\MongoDB\Server\4.2\log」の「mongod.log」ファイルに書き込み権限がありませんでした。次に、ファイルの「プロパティ」に「セキュリティ」と「書き込み」の権限を入れます。

0
Diego Guedes