db.shutdownServer()
バージョン 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()
コマンドが実行された場合、 はmongod
forceフィールドが 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 を使用しません。MongoDB4.4 以前では、
mongod
プライマリ の場合、 timeoutSecs はセカンダリが追いつくまでプライマリが待機する秒数です。指定された時間内にどのセカンダリも追いつかなければ、コマンドは失敗します。 デフォルトは10
秒です。
この操作は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 })