1. ホーム
  2. データベース
  3. モンゴルディーブ

Mongoサービス再起動例外問題の対処方法

2022-01-19 05:23:54

問題の発見

今、同社のサーバーは、定期的に停電ので、定期的にすべてのサービスを再起動するには、しかし、これらのredis、mysql、mongoと他のサービスは、モンゴは定期的に以前の経験とネットワークの記事に関する情報に基づいて、再起動に失敗しました、ここで要約を記録することです。

まず第一に、ここにインストールされているサービスは、yumまたはaptを介してインストールされている、これは私が常に推奨し、使用する操作である、このようにインストールがきちんとあるので、どのディレクトリに配置するファイルの種類は同じです(例:/var/log/xxx/xxx.log)。

エラーの報告に関する主な問題点は以下の通りです。

[root@localhost mongo]# systemctl status mongod
● mongod.service - MongoDB Database Server
   Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since a 2021-06-28 14:32:51 CST; 6s ago
     Docs: https://docs.mongodb.org/manual
  Process: 3351 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=1/FAILURE)
  Process: 3348 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 3345 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 3343 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)

Jun 28 14:32:51 localhost systemd[1]: Starting MongoDB Database Server...
Jun 28 14:32:51 localhost mongod[3351]: about to fork child process, waiting until server is ready for connections.
Jun 28 14:32:51 localhost mongod[3351]: forked process: 3354
Jun 28 14:32:51 localhost mongod[3351]: ERROR: child process failed, exited with 1
Jun 28 14:32:51 localhost mongod[3351]: To see additional information in this output, start without the "--fork" option.
Jun 28 14:32:51 localhost systemd[1]: mongod.service: control process exited, code=exited status=1
Jun 28 14:32:51 localhost systemd[1]: Failed to start MongoDB Database Server.
Jun 28 14:32:51 localhost systemd[1]: Unit mongod.service entered failed state.
Jun 28 14:32:51 localhost systemd[1]: mongod.service failed.



例外が発生し、そこからあまり有効な情報が得られないのを見て、まずログを見に行き、ログファイルから有用な情報を見る(ここではスクリーンショットを時間内に記録しなかったので、コードやスクリーンショットは最初に載せないことにする)。

処理の手順

mongoが提供する修復ツールを使用して、以下のコマンドを実行します。

mongod --repair -f /etc/mongod.conf


ただ、いくつかの投稿では、最初のステップを実行した後、スタートアップコマンド(以下のように:)を実行すると、新しいdbpathを指すdbpathとlogpathパラメータを運び、これも立ち上がるが、データを失うし、毎回新しいディレクトリを指すように与えることはできない、としていますね?

mongod --port 27017 --dbpath /data/db --logpath /var/log/mongod.log --fork


mongo の dbpath ディレクトリ (デフォルト: /var/lib/mongodb) に mongod.lock ファイルが存在するかどうかを調べ、存在する場合は削除します。

dbpath ディレクトリ(デフォルト:/var/lib/mongodb)、log ディレクトリ(デフォルト:/var/lib/mongo)のパーミッションを確認し、mongod.mongod に操作権限があるか、ない場合は mongod.mongod に権限付与します。

chown -Rc mongod. /var/log/mongodb

chown -Rc mongod. /var/lib/mongo



上記の手順が完了したら、mongodbサービスを再起動します。

まとめ

今回の記事は、Mongoのサービス再起動例外についてです。Mongo サービス再起動例外については、スクリプトハウスの過去記事を検索するか、引き続き以下の関連記事を参照してください。