バージョン 5.0 での変更。
- db.shutdownServer()
- 現在の - mongodまたは- mongosプロセスを正常かつ安全にシャットダウンします。- db.shutdownServer()管理データベース に対して 操作を発行する必要があります。- db.shutdownServer()の構文は次のとおりです。- db.shutdownServer({ - force: <boolean>, - timeoutSecs: <int> - }) - メソッドは次のフィールドを取ります。 フィールド説明- 任意: - mongodまたは- mongosを強制的にシャットダウンするには、- trueを指定します。強制シャットダウンは、- mongodまたは- mongosで実行中の操作を中断し、予期しない動作が発生する可能性があります。- forceを使用して、進行中のインデックスビルドを一時停止および再開できます。- db.shutdownServer()詳細については、「レプリカセット ノード」の を参照してください。- 任意。 - MongoDB 5.0 以降では、 - mongodと- mongosは、シャットダウン前に進行中のデータベース操作を完了できるように休止期間に入ります。- mongodプライマリがシャットダウン要求を受信すると、プライマリは次の処理を実行します。- セカンダリへのステップダウンを試みます。 - ステップダウンに失敗し… - shutdownまたは- db.shutdownServer()コマンドが実行された場合、 は- mongodforceフィールドが true の場合のみシャットダウン手順を続行します。
 
- 休止期間に入ります。 
- 残りのデータベース操作を終了します。 
- シャットダウンします。 
 - mongodセカンダリまたは- mongosシャットダウン要求の場合、シャットダウンが要求された後に休止期間に入ります。- 休止期間は、次の方法で指定されます。 - または コマンドが実行された場合は - shutdown- db.shutdownServer()timeoutSecsフィールド、または
- SIGTERMシグナルが- mongodに送信された場合は、- shutdownTimeoutMillisForSignaledShutdownサーバー パラメーター、または
- SIGTERMシグナルが- mongosに送信された場合は、- mongosShutdownTimeoutMillisForSignaledShutdownになります。
 - クライアントは、シャットダウン中の - mongodまたは- mongosへの新しい接続を開くことができません。- timeoutSecs は、秒単位で期間を指定します。デフォルトのとおりです。 - MongoDB 5.0 以降のバージョンでは 15 秒です。 
- MongoDB 5.0 以前のバージョンでは 10 秒です。 
 - mongodは timeoutSecs を次のように使用します。- 現在のノードがレプリカセットの プライマリノードである場合、 - mongodは プライマリノード を降格する前に、選挙可能な ノードが追いつくまで timeoutSecsフィールドで指定された秒数まで待機します。キャッチアップ時間の詳細については、 「 レプリケーションラグ 」を参照してください。
- プライマリから降格した後に現在のノードが - SECONDARY状態になっている場合、 timeoutSecs で指定された残りの時間は休止期間に使用され、既存の操作を完了できます。新しい操作は他のレプリカセットノードに送信されます。
 - MongoDB5.0 以降、 - mongosは timeoutSecs を休止期間として使用し、既存の操作を完了できるようにします。新しい操作は他の- mongosノードに送信されます。5.0 より前のバージョンのMongoDBでは、- mongosはすぐにシャットダウンし、 timeoutSecs を使用しません。
この操作はshutdownコマンドのラッパーを提供します。
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
重要
このコマンドは、 MongoDB Atlasクラスターではサポートされていません。 すべてのコマンドの Atlas サポートの詳細については、「 サポートされていないコマンド 」を参照してください。
- MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン 
- MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン 
動作
mongod自己管理型配置の認証 を使用して開始さ れ た の場合、認証された接続を介してdb.shutdownServer() を実行する必要があります。詳しくは、「アクセス制御」を参照してください。
mongod自己管理型配置で認証 なし で開始された の場合、ローカルホストdb.shutdownServer() インターフェースに接続されたクライアントから を実行する必要があります。たとえば、mongosh --host "127.0.0.1"と同じホストマシンで オプションを使用してmongod を実行します
db.shutdownServer() レプリカセット ノード
{db.shutdownServer() mongodレプリカセット メンバーが インデックス ビルド などの特定の操作を実行している場合、 は失敗します。force: trueを指定すると、インデックスのビルド進行状況をディスクに保存できます。 mongodは再起動時にインデックス構築を回復し、保存されたチェックポイントから続行します。
レプリカ・セットのシャットダウン プライマリ、セカンダリ、または mongos
MongoDB 5.0 以降では、mongod と mongos は、シャットダウン前に進行中のデータベース操作を完了できるように休止期間に入ります。
mongod プライマリがシャットダウン要求を受信すると、プライマリは次の処理を実行します。
- セカンダリへのステップダウンを試みます。 - ステップダウンに失敗し… 
- 休止期間に入ります。 
- 残りのデータベース操作を終了します。 
- シャットダウンします。 
mongod セカンダリまたは mongos シャットダウン要求の場合、シャットダウンが要求された後に休止期間に入ります。
休止期間は、次の方法で指定されます。
- または コマンドが実行された場合は - shutdown- db.shutdownServer()timeoutSecs フィールド 、または
- SIGTERMシグナルが- mongodに送信された場合は、- shutdownTimeoutMillisForSignaledShutdownサーバー パラメーター、または
- SIGTERMシグナルが- mongosに送信された場合は、- mongosShutdownTimeoutMillisForSignaledShutdownになります。
クライアントは、シャットダウン中の mongod または mongos への新しい接続を開くことができません。
timeoutSecsは、秒単位で期間を指定します。 デフォルトは次のとおりです。
- MongoDB 5.0 以降のバージョンでは 15 秒です。 
- MongoDB 5.0 以前のバージョンでは 10 秒です。 
mongodはtimeoutSecsを次のように使用します。
- 現在のノードがレプリカセットのプライマリノードである場合、 - mongodはプライマリ ノードを降格する前に、選択可能なノードが追いつくまでtimeoutSecsフィールドで指定された秒数まで待機します。 キャッチアップ時間の詳細については、「レプリケーションラグ 」を参照してください。
- プライマリから降格した後に現在のノードが - SECONDARY状態になっている場合、 timeoutSecsで指定された残りの時間は休止期間に使用され、既存の操作を完了できます。 新しい操作は他のレプリカセット ノードに送信されます。
MongoDB 5.0以降、 mongosはtimeoutSecsを休止期間として使用し、既存の操作を完了できるようにします。 新しい操作は他のmongosノードに送信されます。 5より前のバージョンの MongoDB で 。 0 、 mongosはすぐにシャットダウンし、 timeoutSecsを使用しません。
警告
プライマリを強制的にシャットダウンすると、セカンダリにまだレプリケートされていない書込みが ロールバックされる可能性があります。
アクセス制御
db.shutdownServer()自己管理型配置で認証をmongod 強制する で を実行するには、認証されたユーザーに 特権が db.shutdownServer()必要 です。たとえば、組み込みロールhostManagerを持つユーザーには適切な権限があります。
例
次をシャットダウンします:  mongod
db.getSiblingDB("admin").shutdownServer() 
強制シャットダウン mongod
db.getSiblingDB("admin").shutdownServer({ "force" : true }) 
より長いタイムアウトでプライマリ mongod をシャットダウンする
db.getSiblingDB("admin").shutdownServer({ "timeoutSecs": 60 })