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
プライマリがシャットダウン要求を受信すると、プライマリは次の処理を実行します。セカンダリへのステップダウンを試みます。
ステップダウンに失敗し…
休止期間に入ります。
残りのデータベース操作を終了します。
シャットダウンします。
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を使用しません。MongoDB 4.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 })