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 包装器中得到修复。但是,仍然有一些问题需要解决,如问题#97中列出的,但应该适用于大多数要求。

4

3 回答 3

11

由于“--shutdown”选项在较新版本的 mongo 中不可用,您现在必须手动终止该进程或登录并运行:

use admin;
db.shutdownServer();

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

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

假设您要连接到位于 127.0.0.1 的本地数据库。您只能使用 --eval 参数运行 1 行,因此use admin; db.shutdownServer();不能选择这样做,但是您可以通过在 IP 后添加“/admin”来完成连接到 admin 数据库。

于 2014-09-25T18:57:24.657 回答
2

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

从文档中:

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

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

mongo

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

use admin
db.shutdownServer()

您只能在连接到 mongod 时使用 db.shutdownServer() 并通过 admin 数据库进行身份验证,或者在没有通过 localhost 接口连接的身份验证的系统上使用。


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

{shutdown : 1}

我对 node.js 驱动程序不是最熟悉的,但一般来说,在驱动程序中运行命令有两种选择,一种应该始终有效:

  1. 将驱动程序的包装用于 runCommand (您可以像这样在 mongo shell 中使用它:)

    db.runCommand({shutdown : 1});

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

    db.$cmd.findOne({"shutdown":1})

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

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

这相当于对$cmd.

于 2013-09-16T20:21:45.013 回答
2

如果其他人在运行 OS X 时通过本教程找到此命令,此命令仅在 Linux 机器上可用,在 OS X 上不可用(请参阅http://docs.mongodb.org/manual/reference/program/mongod/ #cmdoption--shutdown明确说明这一点)。我不确定原始海报是否发生了这种情况,但希望它对某人有所帮助。

于 2015-03-20T23:35:55.907 回答