MongoDB 数据库的正确启动和停止姿势

2018/02/02 MongoDB

数据库的启动和停止是数据库最基本的操作,也是数据库能够提供服务和被连接管理的前提条件。不同的数据库启动和停止的方式有一些差异,但也有相同之处,启动和关闭也必定会和数据库的进程有关。

oracle数据库中,数据库的启动和停止都是分三个过程的,正常的启动方法都是在sqlplus中执行startup命令启动,或者shutdown immediate命令关闭数据库; 在一些特殊的情况下,会通过shutdown abort或者kill后台进程的方式强制关闭数据库;

MySQL数据库中,数据库的启动也是通过mysqld或者mysqld_safe命令加配置文件的方式进行启动,关闭时使用mysqladmin工具加shutdown选项的命令进行mysql数据库的正常关闭;

通过确认kill进程的方式与shutdown命令的方式停止过程相同,也可以通过kill进程的方式实现mysql的关闭;

对于MongoDB数据库的启动和停止,可以通过下面的方法进行研究:

启动 MongoDB

3.启动三个数据库(dbpath),并且端口(--port 1000x),集群名称(--replSet gabriel),关闭日志选项(--nojournal),守护进程方式启动,会自动拉起(--fork),日志目录(--logpath)

mongod --dbpath /data/db/node1 --port 10001 --replSet gabriel --nojournal --fork --logpath /data/db/node1.log
mongod --dbpath /data/db/node2 --port 10002 --replSet gabriel --nojournal --fork --logpath /data/db/node2.log
mongod --dbpath /data/db/node3 --port 10003 --replSet gabriel --nojournal --fork --logpath /data/db/node3.log

停止 MongoDB

向MongoDB进程发送信号用于停止MongoDB,如果要安全停止可以有两种信号:sigint 信号,或者 sigterm信号

如何停止:

实例

[root@node1 ~]# ps -axu |grep mongo 
root       2314  0.5 10.9 1756056 109168 ?      Sl   Feb01   5:02 mongod -f /usr/local/mongodb/conf/config.conf
root       2475  1.6 30.7 1872244 307620 ?      Sl   Feb01  13:52 mongod -f /usr/local/mongodb/conf/shard1.conf
root       2565  0.2  8.2 1064804 82060 ?       Sl   Feb01   2:05 mongod -f /usr/local/mongodb/conf/shard2.conf
root       2603  0.9 16.4 1722124 164488 ?      Sl   Feb01   7:44 mongod -f /usr/local/mongodb/conf/shard3.conf
root       2694  0.5  1.6 314648 16812 ?        Sl   Feb01   4:33 mongos -f /usr/local/mongodb/conf/mongos.conf
root       7566  0.0  0.0 112644   964 pts/0    S+   10:33   0:00 grep --color=auto mongo
[root@node1 ~]# kill -2 2314
[root@node1 ~]# kill -2 2694
[root@node1 ~]# kill -2 2603
[root@node1 ~]# kill -2 2565
[root@node1 ~]# kill -2 2475
[root@node1 ~]# ps -axu |grep mongo 
root       7591  0.0  0.0 112644   968 pts/0    R+   10:34   0:00 grep --color=auto mongo
[root@node1 ~]# 
$ kill -2 8888

其中 8888 为mongod进程号 ,该进程号可以通过 ps -axu |grep mongo 获取;

-2 表示向mongod进程发送sigint信号

$ kill -4 8888

其中 8888 为mongod进程号 ,该进程号可以通过 ps -axu |grep mongo 获取;

-4 表示向mongod进程发送sigterm信号

细节解释如下

上面2种方式做到了安全停止MongoDB,处理细节如下:

– mongod进程收到SIGINT信号或者SIGTERM信号
– 内部会做一些处理
– 关闭所有打开的连接 – 将内存数据强制刷新到磁盘 – 当前的操作执行完毕 – …….. – 安全停止

安全的shutdown命令方式:

> use admin;
> db.shutdownServer();

不安全的停止mongod方式:

– Kill -9 4812

注意:用kill -9可能会导致MongoDB数据文件损坏,需要用repair database修复数据库才能正常打开。

Contact

关注公众号-搜云库

Show Disqus Comments

Search

    关注 - 微信公众号

    搜云库

    Table of Contents