mongodb的几种启动方式以及关闭方式

    启动Mongodb服务有两种方式,前台启动或者Daemon方式启动,前者启动会需要保持当前Session不能被关闭,后者可以作为系统的fork进程执行,下文中的path是mongodb部署的实际地址。

    1. 最简单的启动方式,前台启动,仅指定数据目录,并且使用默认的27107端口,cli下可以直接使用./mongo连上本机的mongodb,一般只用于临时的开发测试。

./mongod --dbpath=/path/mongodb

    2. 启动绑定固定的IP地址、端口,这就mongo在连接mongod的时候就需要指定IP和端口了。

./mongod --dbpath=/path/mongodb --bind_ip=10.10.10.10 --port=12345
//连接mongod
./mongo 10.10.10.10:12345

    3. daemon后台运行,简单的是命令后面加“&”。

./mongod --dbpath=/path/mongodb --bind_ip=10.10.10.10 --port=12345 &

    或者使用mongod自带的--fork参数,此时必须指定log的路径。

./mongod --dbpath=/path/mongodb --fork=true logpath=/path/mongod.log

    4. (推荐)以配置文件形式保存配置。

port=12345
bind_ip=10.10.10.10
logpath=/path/mongod.log
pidfilepath=/path/mongod.pid
logappend=true
fork=true

  然后启动mongod时引入配置文件

./mongod -f /path/mongod.conf

下面是mongod启动的常用参数详细说明:

参数说明取值示例
dbpathmongodb数据文件存储路径/data/mongodb
logpathmongod的日志路径/var/log/mongodb/mongodb.log
logappend日志使用追加代替覆盖true
bind_ip绑定的IP10.10.10.10
port绑定的端口27107
journalwrite操作首先写入“日记”,是一个数据安全的设置,具体参考官方文档。true


Mongodb的关闭:
前台运行:

如果没有使用--fork,直接可以前台退出终端关闭。通过这种方式,Mongodb将会自己做清理退出,把没有写好的数据写完成,并最终关闭数据文件。要注意的是这个过程会持续到所有操作都完成。

后台运行:

如果使用--fork在后台运行mongdb服务,那么就要通过向服务器发送shutdownServer()消息来关闭。


1、普通命令:
$ ./mongod
> use admin
> db.shutdownServer()


要注意的是,这个命令只允许在本地,或是一个经过认证的客户端。


2、如果这是一个主从式的复制集群,在1.9.1版本后将按下面的步骤来关闭
检查从Mongodb的数据更新时间
如果所有的从Mongodb和主的时间差都超过10,这个时候不会关闭mongodb(在这种情况下面,我们可以通过配置timeoutSecs的方式来让从Mongodb完成数据的更新)
如果其中有一个从Mongodb与主服务时间差在10秒内,那么主服务器将会关闭,并且等待从Mongodb更新完成并关闭。
3、如果没有up-to-date 从Mongodb且你想强制关闭服务,可以通过添加force:true;命令如下:
> db.adminCommand({shutdown : 1, force : true})
> //or
> db.shutdownServer({force : true})


4、指定特定超时时间的关闭服务器,命令同上,另外加上一个timeoutsec:参数
> db.adminCommand(shutdown : 1, force : true, timeoutsec : 5)
> //or
> db.shutdownServer({force : true, timeoutsec : 5})


Mongodb开机启动


在/etc/rc.local文件末尾添加下面的代码
#add mongodb service
rm -rf /data/mongodb_data/* && /usr/local/mongodb/bin/mongod --dbpath=/data/mongdb_data/ --logpath=/data/mongdb_log/mongodb.log --logappend &



  

<think>好的,用户想知道如何安全地关闭MongoDB服务。首先,我需要回忆MongoDB关闭方法。根据引用里的内容,有几种同的方式,比如在Linux下使用systemctl命令,或者在Windows下用net stop。另外,还有通过mongo shell执行db.shutdownServer()的方法。 用户可能是在同的操作系统环境下操作,所以需要分别说明。首先,针对Linux系统,使用systemctl是最常见的,需要检查服务状态,停止服务,然后禁用自动启动。这部分在引用[1]和[2]里有提到,特别是引用[1]中的序列图展示了流程。 然后是Windows系统,用户可能运行的是MongoDB作为Windows服务,这时候用net stop命令,如引用[3]所述。另外,如果用户是通过MongoDB的配置文件安装的服务,可能还需要用mongod的命令行参数来停止,但这种情况相对少,可能需要进一步确认。 另外,用户提到安全关闭,所以需要强调正确关闭的重要性,比如防止数据损坏。引用[4]里提到了备份和恢复,虽然直接相关,但说明正确关闭对数据完整性很关键。 还有通过mongo shell的方式关闭,适用于权限足够的用户,需要先切换到admin数据库,然后执行关闭命令。这在引用[2]和[4]中可能有涉及,但需要具体说明步骤。 需要注意的是,用户可能没有权限或者服务名称同,所以需要提醒检查服务状态和权限。同时,验证服务是否真正停止,比如用systemctl status或者ps命令检查进程。 最后,总结步骤,分点说明同系统下的操作,并强调安全关闭的必要性。可能还需要提到禁用自动启动,特别是在Linux下,但用户可能只是想关闭是永久禁用,所以需要区分情况。 现在需要整理这些信息,确保步骤清晰,引用正确,并且覆盖同操作系统的情况。同时,语言要简洁明了,符合用户的需求。</think>### 如何安全关闭 MongoDB 服务 #### 一、Linux 系统操作步骤(推荐通过系统服务管理) 1. **检查 MongoDB 服务状态** 执行命令确认服务是否正在运行: ```bash systemctl status mongod ``` 若输出显示 `active (running)`,则服务处于运行状态[^1][^2]。 2. **停止 MongoDB 服务** 使用以下命令安全停止服务: ```bash systemctl stop mongod ``` 此操作会通知 MongoDB 完成当前操作并释放资源后关闭[^1][^3]。 3. **禁用自动启动(可选)** 若需禁止 MongoDB 随系统启动: ```bash systemctl disable mongod ``` 适用于需要长期关闭服务的场景。 4. **验证服务状态** 再次执行 `systemctl status mongod`,确认输出为 `inactive (dead)`。 --- #### 二、Windows 系统操作步骤 1. **通过服务管理器停止** - 打开命令提示符(管理员权限),执行: ```cmd net stop MongoDB ``` 需确保服务名称与安装时一致(默认 `MongoDB`)[^4]。 - 或通过任务管理器手动停止服务。 --- #### 三、通过 MongoDB Shell 关闭(通用方法) 1. **连接至 MongoDB 实例** 执行命令进入交互式 Shell: ```bash mongo --host localhost --port 27017 ``` 2. **执行关闭指令** 切换到 `admin` 数据库后关闭服务: ```javascript use admin db.shutdownServer() ``` 此方法要求用户具有 `shutdown` 权限[^4]。 --- #### 四、强制关闭(仅限异常场景) 若上述方法失效,可通过终止进程实现: - **Linux**: ```bash pkill -9 mongod ``` - **Windows**: 通过任务管理器结束 `mongod.exe` 进程。 **注意**:强制关闭可能导致数据丢失,需谨慎使用[^4]。 --- ### 关键注意事项 - **数据安全**:正常关闭可确保数据写入磁盘,避免损坏[^4]。 - **权限要求**:通过 Shell 关闭需管理员权限[^2]。 - **服务名称差异**:若自定义过服务名称,需替换命令中的 `mongod`/`MongoDB`[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值