我当前的问题:我有一个生产服务器,只是更新了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中列出的问题仍有一些问题需要解决,但是应该适用于大多数要求。
答案 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驱动程序,但是你有两个选项可以在驱动程序中运行命令,一个应该始终有效:
将你的驱动程序的包装器用于runCommand(你可以在mongo shell中使用它,如下所示:)
db.runCommand({shutdown:1});
使用内置的$cmd
伪集合来运行命令。命令的包装器实际上使用此方法,如果您没有其他选项,则可以针对$ cmd运行查询以关闭服务器:
分贝$ cmd.findOne({ “关断”:1})。
如果您没有运行驱动程序,则可以使用REST interface(如果已公开)(运行--rest
时使用mongod
命令行选项)。通过发出POST请求,您可以对admin数据库运行命令:
http://localhost:28017/admin/$cmd/?filter_shutdown=1&limit=1
相当于针对$cmd
运行上一个查询。