Lev*_*rts 6 database mongodb node.js
我当前的问题:我有一个生产服务器,只是更新了mongod但丢失了一些功能.
在早期版本(v2.0.6)中,我能够mongod使用该--shutdown选项运行,它会杀死所有其他实例.
现在有版本v2.4.5- 如果我运行:
mongod --shutdown
Run Code Online (Sandbox Code Playgroud)
结果是:
error command line: unknown option shutdown
use --help for help
Run Code Online (Sandbox Code Playgroud)
版本信息: mongod --version
db version v2.4.5
Mon Sep 16 14:09:38.994 git version: a2ddc68ba7c9cee17bfe69ed840383ec3506602b
Run Code Online (Sandbox Code Playgroud)
重要的是我有这个选项或类似的东西,因为我有一个管理新实例的服务器进程.
例如:
var spawn = require('child_process').spawn,
result = spawn('mongod', ['--quiet', '--shutdown', '--directoryperdb', '--dbpath', __dirname + '/database']);
Run Code Online (Sandbox Code Playgroud)
编辑:
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.
Run Code Online (Sandbox Code Playgroud)
编辑:
我觉得我应该更新这个问题.从v0.9.6开始,mongojs包装器中已修复此问题.但是,仍然存在一些问题需要解决,如问题#97所列,但应该适用于大多数要求.
Sco*_*ott 10
由于"--shutdown"选项在较新版本的mongo中不可用,因此您现在必须手动终止该进程或登录并运行:
use admin;
db.shutdownServer();
Run Code Online (Sandbox Code Playgroud)
但是,您可以通过以下方式在一行中完成此操作:
mongo 127.0.0.1/admin --eval "db.shutdownServer()"
Run Code Online (Sandbox Code Playgroud)
假设您在127.0.0.1连接到本地数据库.您只能使用--eval参数运行1行,因此use admin; db.shutdownServer();不是一个选项,但是您可以通过在IP之后添加"/ admin"来完成与admin db的连接.
您是否尝试过在 mongo shell 中使用 db.shutdownServer() ?
从文档中:
要停止在后台或前台运行的 mongod 实例,请在 mongo shell 中发出 db.shutdownServer() 帮助程序。使用以下顺序:
要打开在默认端口 27017 上运行的 mongod 实例的 mongo shell,请发出以下命令:
Run Code Online (Sandbox Code Playgroud)mongo要切换到管理数据库并关闭 mongod 实例,请发出以下命令:
Run Code Online (Sandbox Code Playgroud)use admin db.shutdownServer()您只能在通过管理数据库身份验证连接到 mongod 时使用 db.shutdownServer() ,或者在没有通过 localhost 接口连接身份验证的系统上使用 db.shutdownServer() 。
根据您的评论,您可以通过对驱动程序中的管理数据库运行shutdown 命令 来执行相同的操作:
{shutdown : 1}
Run Code Online (Sandbox Code Playgroud)
我对 node.js 驱动程序不是最熟悉,但一般来说,在驱动程序中运行命令有两种选择,其中一种应该始终有效:
使用驱动程序的 runCommand 包装器(您可以在 mongo shell 中使用它,如下所示:)
db.runCommand({关闭: 1});
使用内置的$cmd伪集合来运行命令。命令的包装器实际上使用此方法,如果您没有其他选项,您可以对 $cmd 运行查询来关闭服务器:
db.$cmd.findOne({"shutdown":1})
如果您没有运行驱动程序,则可以使用公开的REST 接口--rest(运行时使用命令行选项mongod)。通过发出 POST 请求,您可以针对管理数据库运行命令:
http://localhost:28017/admin/$cmd/?filter_shutdown=1&limit=1
Run Code Online (Sandbox Code Playgroud)
这相当于针对 运行前面的查询$cmd。