[解決済み] Mongo Restart Error -- /var/run/mongodb/mongod.pid が存在する
質問
AWS Linux AMI 2016.09.1(HVM) を新規に立ち上げ、Mongodbの最新リリースをダウンロードしたところです。私はMongoDBバージョン3.0.14を使用しています。 私は/etc/mongod.confを以下のように更新しました。
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Where and how to store data.
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
# network interfaces
net:
port: 27017
# bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on
all interfaces.
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
サービスを使って初めてMongodbを動かしてみました。
sudo service mongod start
すべて正常に動作しています。 Mongodbを停止して再起動すると
sudo service mongod stop
sudo service mongod restart
以下のようなエラーが発生します。
Error starting mongod. /var/run/mongodb/mongod.pid exists.
以下は、ログファイル /var/log/mongodb/mongod.log に書かれている内容です。
2017-01-16T14:11:16.869+0000 I CONTROL ***** SERVER RESTARTED *****
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] MongoDB starting :
pid=2820 port=27017 dbpath=/var/lib/mongo 64-bit hos
t=ip-10-0-0-91
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] db version v3.0.14
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] git version:
08352afcca24bfc145240a0fac9d28b978ab77f3
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] build info: Linux
ip-10-63-190-181 3.4.43-43.43.amzn1.x86_64 #1 SMP Mon
May 6 18:04:41 UTC 2013 x86_64 BOOST_LIB_VERSION=1_49
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] allocator: tcmalloc
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] options: { config:
"/etc/mongod.conf", net: { port: 27017 }, processMan
agement: { fork: true, pidFilePath: "/var/run/mongodb/mongod.pid" },
storage: { dbPath: "/var/lib/mongo", journal: { enabled: t
rue } }, systemLog: { destination: "file", logAppend: true, path:
"/var/log/mongodb/mongod.log" } }
2017-01-16T14:11:16.893+0000 E NETWORK [initandlisten] Failed to unlink
socket file /tmp/mongodb-27017.sock errno:1 Operation
not permitted
2017-01-16T14:11:16.893+0000 I - [initandlisten] Fatal Assertion
28578
2017-01-16T14:11:16.893+0000 I - [initandlisten]
***aborting after fassert() failure
この問題について、いくつかのブログで解決策が投稿されているのを見ましたが、どれもうまくいかないようです。 日曜日は一日中、この問題を解決しようとしていました。 以前のAWSインスタンスとMongoの運用では、この問題は発生しなかったのですが。
解決方法は?
OK、私の最初の回答で持っていたものより良い解決策を見つけました。 私の前の答えは、単に症状をなくしただけでした。 私は、他の何人かの人が他の様々なディレクトリをchownしなければならないのを見ました。 私は、問題はmongodが正しく再起動せず、失敗したときに多くのディレクトリを不正にセットアップしたままにしておくことだと思います。 複数のスレッドが動作しているので、どのディレクトリが正しくセットアップされるかは、ある程度ランダムだと思います。 私はAmazonのAWS AMI Linuxリリースを使用し、MongoDB 3.4をインストールしています。 以下のサイトで非常に優れたMongoDBインストールスクリプトを見つけました。
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-amazon/
では、その修正方法を紹介します。 何度かテストして、その都度うまくいきました。 通常通りmongoをインストールします。 上記のスクリプトが役に立つなら使ってください。 mongod を起動する前に以下のコマンドを実行します。
sudo chkconfig mongod on
上記のインストールスクリプトは、chkconfigをハイライトしていますが、スクリプトの一番下の見えないところにあることにお気づきでしょうか。 これで mongod を毎回うまく再起動できるようになります。 これは他の Linux バージョンでも動作するはずです。
関連
-
[解決済み】MongoError: 最初の接続でサーバー [localhost:27017] への接続に失敗しました。
-
[解決済み】MongoDBデータベースの名前を変更する方法とは?
-
[解決済み] MongoDB ドキュメントからフィールドを完全に削除する方法は?
-
[解決済み] MongoDB - 管理者ユーザが認証されていない
-
[解決済み] Mongorestore はファイル "db/collection.bson" をどうしたらいいかわからないため、スキップします。
-
[解決済み] mongodb サーバーに接続しようとすると、mongo コマンドが認識されません。
-
[解決済み] MongoDBでフィールドが存在することを確認する
-
[解決済み】MongoDBのシェルで20以上のアイテム(ドキュメント)をプリントアウトする方法は?
-
[解決済み] 日付に基づいたクエリを返す
-
[解決済み】MongoDBのすべてのドキュメントのフィールド名を変更するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン