6

私の現在の問題: 運用サーバーがあり、mongod を更新したばかりですが、一部の機能が失われました。

以前のバージョン ( ) では、このオプションを使用v2.0.6して実行できましたが、他のすべてのインスタンスが強制終了されました。mongod--shutdown

今バージョンでv2.4.5- 私が実行した場合:

mongod --shutdown

結果は次のとおりです。

error command line: unknown option shutdown
use --help for help

バージョン情報:mongod --version

db version v2.4.5
Mon Sep 16 14:09:38.994 git version: a2ddc68ba7c9cee17bfe69ed840383ec3506602b


新しいインスタンスを管理するサーバー プロセスがあるため、このオプションまたはそれに類似したオプションがあることが重要です。

例えば:

var spawn = require('child_process').spawn,
result    = spawn('mongod', ['--quiet', '--shutdown', '--directoryperdb', '--dbpath', __dirname + '/database']);


編集:
Mongodbのドキュメントにはまだ--shutdownコマンドオプションがあります。
リンク: http://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/

Alternately, you can shut down the mongod instance:

using the --shutdown option
from a driver using the shutdown. For details, see the drivers documentation for your driver.


編集:
この質問を更新する必要があると感じました。この問題は、v0.9.6 の mongojs ラッパーで修正されています。ただし、issue #97に記載されているように解決すべき問題がまだいくつかありますが、ほとんどの要件で機能するはずです。

4

3 に答える 3

11

「--shutdown」オプションは新しいバージョンの mongo では使用できないため、プロセスを手動で強制終了するか、ログインして実行する必要があります。

use admin;
db.shutdownServer();

ただし、次のようにすると、これを 1 行で実行できます。

mongo 127.0.0.1/admin --eval "db.shutdownServer()"

127.0.0.1 でローカル データベースに接続していると仮定します。--eval パラメーターを使用して実行できるのは 1 行だけなので、これuse admin; db.shutdownServer();はオプションではありませんが、IP の後に「/admin」を追加することで、管理データベースへの接続を実現できます。

于 2014-09-25T18:57:24.657 に答える
2

mongo シェルで db.shutdownServer() を使用してみましたか?

ドキュメントから:

バックグラウンドまたはフォアグラウンドで実行されている mongod インスタンスを停止するには、mongo シェルで db.shutdownServer() ヘルパーを発行します。次のシーケンスを使用します。

デフォルトのポート 27017 で実行されている mongod インスタンスの mongo シェルを開くには、次のコマンドを発行します。

mongo

admin データベースに切り替えて mongod インスタンスをシャットダウンするには、次のコマンドを発行します。

use admin
db.shutdownServer()

db.shutdownServer() を使用できるのは、mongod に接続して管理データベースに認証されているとき、または認証なしで localhost インターフェイス経由で接続されているシステムのみです。


あなたのコメントによると、ドライバーの管理データベースに対してshutdown コマンドを実行することで、同じことができます。

{shutdown : 1}

私は node.js ドライバーに精通しているわけではありませんが、一般的にドライバーでコマンドを実行するための 2 つのオプションがあり、そのうちの 1 つは常に機能するはずです。

  1. runCommand にドライバーのラッパーを使用します (これは、mongo シェルで次のように使用できます:)

    db.runCommand({シャットダウン: 1});

  2. 組み込みの$cmd疑似コレクションを使用してコマンドを実行します。コマンドのラッパーは実際にこの方法を使用します。他にオプションがない場合は、$cmd に対してクエリを実行してサーバーをシャットダウンできます。

    デシベル.$cmd.findOne({"シャットダウン":1})

ドライバーを実行していない場合、公開されている場合はREST インターフェイス--restを使用できます (実行時にコマンドライン オプションを使用しますmongod)。POST リクエストを行うことで、管理データベースに対してコマンドを実行できます。

http://localhost:28017/admin/$cmd/?filter_shutdown=1&limit=1

これは、 に対して前のクエリを実行するのと同じです$cmd

于 2013-09-16T20:21:45.013 に答える