Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

自己管理型mongod プロセス を構成する

項目一覧

  • mongodプロセスの開始
  • mongod プロセスの停止
  • mongod プロセスのトラブルシューティング
  • レプリカセットの停止

MongoDB は標準プログラムとして実行されます。 mongodコマンドを発行してオプションを指定すると、コマンドラインから MongoDB を起動できます。 オプションのリストについては、 mongodリファレンスを参照してください。

次の例えでは、 mongodプロセスを含むディレクトリがシステム パス内にあることを前提としています。 mongodプロセスは、個々のサーバー上で実行されるプライマリ データベース プロセスです。 mongosは、クライアントの観点から見るとmongodと同等の一貫した MongoDB インターフェースを提供します。 mongoshバイナリは管理 shell を提供します。

このドキュメントでは、mongod プロセスについて説明します。ただし、このドキュメントの一部は、mongos インスタンスにも当てはまる場合があります。

デフォルトでは、MongoDB はポート 27017 でクライアントからの接続を listen し、データを /data/db ディレクトリに保存します。

Windows の場合、このパスは MongoDB を起動するドライブにあります。たとえば、--dbpath を指定しない場合、C:\ ドライブで MongoDB サーバーを起動すると、すべてのデータファイルが C:\data\db に保存されます。

すべてのデフォルトを使用して MongoDB を起動するには、システム shell で次のコマンドを実行します。

mongod

mongod でデータファイルを /data/db 以外のパスに保存する場合は、dbPath を指定できます。dbPath は、mongod を開始する前に存在している必要があります。存在しない場合は、ディレクトリと権限を作成して、mongod がこのパスにデータを読み書きできるようにします。権限の詳細については、セキュリティ操作のドキュメントを参照してください。

mongodがデータディレクトリとして使用する dbPath を指定するには、--dbpath オプションを使用します。次の呼び出しでは、mongod インスタンスが開始され、/srv/mongodb パスにデータが格納されます。

mongod --dbpath /srv/mongodb/

注意

mongod は、デプロイに関するトラブルシューティングを行う MongoDB エンジニアを支援するために、フルタイム診断データ取得メカニズムを備えています。このスレッドが失敗すると、元のプロセスが終了します。特に一般的な障害を回避するには、プロセスを実行しているユーザーに FTDC diagnostic.data ディレクトリを作成する権限があることを確認します。mongod の場合、このディレクトリは storage.dbPath 内にあります。mongos の場合は、systemLog.path と同じ階層にあります。

1 つのネットワーク インターフェース上の接続を同時に listen できるのはプロセスは 1 つだけです。単一のマシンで複数の mongod プロセスを実行する場合、またはこのポートを使用する必要がある他のプロセスが存在する場合には、それぞれにクライアント接続を listen する別のポートを割り当てる必要があります。

mongod にポートを指定するには、コマンドラインで --port オプションを使用します。次のコマンドは、ポート 12345 で listen する mongod を開始します。

mongod --port 12345

混乱を避けるために、可能な限りデフォルトのポート番号を使用してください。

mongodプロセスをデーモン(fork)として実行し、かつその出力をログファイルに書込み (write) するには、--fork--logpath のオプションを使用します。ログディレクトリは作成する必要がありますが、ログファイルが存在しない場合は mongod によって作成されます。

次のコマンドでは、mongod をデーモンとして起動し、ログ出力を/var/log/mongodb/mongod.logに記録します。

mongod --fork --logpath /var/log/mongodb/mongod.log

一般的な構成と一般的なユースケースの配置の概要については、「自己管理型配置のためのランタイムデータベース構成 」を参照してください。

クリーン シャットダウンでは、mongod は保留中のすべての操作を完了し、すべてのデータをデータファイルにフラッシュして、すべてのデータファイルを閉じます。他のシャットダウンはクリーンではなく、データファイルの有効性を損なう可能性があります。

確実にクリーンなシャットダウンを行うには、常に次のいずれかの方法で mongod インスタンスをシャットダウンしてください。

次のようにdb.shutdownServer()メソッドを使用して、 mongosh } からmongodをシャットダウンします。

use admin
db.shutdownServer()

init スクリプトから同じメソッドを呼び出しても、同じ結果が得られます。

authorization が有効になっているシステムの場合、ユーザーは admin データベースに認証されているとき、または認証が有効になっていないシステム上の localhost インターフェース経由で認証された場合のみ db.shutdownServer() を実行できます。

Linux でのみサポートされます。コマンドラインから、--shutdown オプションを使用して mongod をシャットダウンします。

mongod --shutdown

mongod インスタンスを対話モード(--forkなし)で実行している場合、クリーン シャットダウンを実行するには Control-C を実行します。

Linux と macOS でのみサポートされています。コマンドラインから、次のいずれかのコマンドを使用して特定の mongod インスタンスをシャットダウンします。

kill <mongod process ID>
kill -2 <mongod process ID>

レプリカセットのプライマリが SIGTERM を受け取ると、プライマリはシャットダウンする前に降格を試みます。

  • 降格が成功した場合、インスタンスはその後、新しいプライマリの選挙に投票せず、シャットダウンを続行します。

  • 降格が失敗すると、インスタンスはシャットダウンを続行します。

警告

mongod インスタンスを終了させるのに、kill -9SIGKILL)は絶対に使用しないでください。

Linux で実行されている MongoDB インスタンスの場合:

  • mongod プロセスと mongos プロセスが SIGUSR2シグナルを受信すると、バックトレースの詳細が各プロセス スレッドのログに追加されます。

  • バックトレースの詳細では、プロセスの関数呼び出しが表示されます。必要に応じて診断に使用したり、 MongoDB サポートに提供したりできます。

バックトレース機能はこれらのアーキテクチャで利用できます。

  • x86_64

  • arm64 (MongoDB 5.0.10と6.0以降)

実行中の mongod プロセスに SIGUSR2 シグナルを発行するには、次のコマンドを使用します。

kill -SIGUSR2 <mongod process ID>

結果のバックトレース データは、--logpath で設定されたとおりに mongod ログファイルに書込まれます

mongodレプリカセット内のプライマリである場合、このmongod インスタンスのシャットダウン プロセスには次の手順が含まれます。

  1. セカンダリがどの程度最新かを確認します。

  2. プライマリから 10 秒以内にセカンダリが存在しない場合、mongod はシャットダウンしないというメッセージを返します。shutdown コマンドに timeoutSecs 引数を渡して、セカンダリが追いつくまで待機することができます。

  3. プライマリから 10 秒以内にセカンダリが存在する場合、プライマリは降格し、セカンダリが追いつくまで待機します。

  4. 60 秒後、またはセカンダリが追いつくと、プライマリはシャットダウンします。

最新のセカンダリがなく、プライマリをシャットダウンする場合は、次の 操作のように、mongosh shutdown引数を指定してforce コマンドを発行します。

db.adminCommand({shutdown : 1, force : true})

すぐに最新の状態になるセカンダリがない場合に、指定した秒数だけセカンダリをチェックし続けるには、timeoutSecs 引数を指定して shutdown を実行します。MongoDB は、どれもすぐに最新にならない場合、指定された秒数だけセカンダリをチェックし続けます。割り当てられた時間内にいずれかのセカンダリが追いついた場合、プライマリはシャットダウンします。どのセカンダリも追いつかなければ、シャットダウンしません。

次のコマンドは、timeoutSecs5 に設定して shutdown を実行します。

db.adminCommand({shutdown : 1, timeoutSecs : 5})

あるいは、db.shutdownServer() メソッドで timeoutSecs 引数を使用することもできます。

db.shutdownServer({timeoutSecs : 5})

戻る

最新のパッチ リリースへのアップグレード