mongodb关闭选项不可用

时间:2013-09-16 19:18:59

标签: node.js mongodb database

我当前的问题:我有一个生产服务器,只是更新了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包装器中已修复此问题。但是,问题#97中列出的问题仍有一些问题需要解决,但是应该适用于大多数要求。

3 个答案:

答案 0 :(得分:10)

自" - 关闭"选项在较新版本的mongo中不可用,您现在必须手动终止该过程或登录并运行:

use admin;
db.shutdownServer();

但是,您可以通过以下方式在一行中完成此操作:

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

假设您已经在127.0.0.1连接到本地数据库。您只能使用--eval参数运行1行,因此不能选择use admin; db.shutdownServer();,但是您可以通过添加" / admin"来完成与admin db的连接。知识产权之后。

答案 1 :(得分:2)

如果其他人在运行OS X时通过the tutorial找到此命令,则此命令仅在Linux计算机上可用,并且在OS X上不可用(请参阅http://docs.mongodb.org/manual/reference/program/mongod/#cmdoption--shutdown明确说明此情况)。我不确定原始海报发生了什么,但希望它可以帮到某人。

答案 2 :(得分:1)

您是否尝试在mongo shell中使用db.shutdownServer()?

来自文档:

  

要停止在后台或前台运行的mongod实例,   在mongo shell中发出db.shutdownServer()帮助器。使用   以下顺序:

     

为默认运行的mongod实例打开mongo shell   端口27017,发出以下命令:

mongo
     

要切换到admin数据库并关闭mongod实例,   发出以下命令:

use admin
db.shutdownServer()
     

当连接到mongod时,你可能只使用db.shutdownServer()   对管理数据库或没有的系统进行身份验证   通过localhost接口连接的身份验证。


根据您的评论,您可以通过在驱动程序中对管理数据库运行shutdown command 来执行相同的操作:

{shutdown : 1}

我不是最熟悉node.js驱动程序,但是你有两个选项可以在驱动程序中运行命令,一个应该始终有效:

  1. 将你的驱动程序的包装器用于runCommand(你可以在mongo shell中使用它,如下所示:)

    db.runCommand({shutdown:1});

  2. 使用内置的$cmd伪集合来运行命令。命令的包装器实际上使用此方法,如果您没有其他选项,则可以针对$ cmd运行查询以关闭服务器:

    分贝$ cmd.findOne({ “关断”:1})。

  3. 如果您没有运行驱动程序,则可以使用REST interface(如果已公开)(运行--rest时使用mongod命令行选项)。通过发出POST请求,您可以对admin数据库运行命令:

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

    相当于针对$cmd运行上一个查询。