欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MongoDB学习系列 -- 服务启动以及关闭

程序员文章站 2022-05-28 21:07:29
...

前面我们对于MongoDB服务的启动、关闭都是采用最简单的方式,并没有就其中的细节进行详细展开,这节我们就来完善一下前面的内容。

一、MongoDB启动

前面我们采用./mongod 的方式启动的服务,其实这个过程中系统为我们做了很多的默认操作:指定数据存放目录为/data/db、监听端口为27017、以非守护进程运行服务等。

系统默认配置项有限,而且很多时候我们需要进行个性化配置。OK,下面我们还以命令行模式为例讲解如何进行mongoDB服务的个性化配置。

note:各配置项都是以两个 -- 开始

1、dbpath

./mongod --dbpath /data/db

这个配置用来指定数据库的存放路径。有一点需要注意:同一机器上如果开启了多个mongodb 服务,一定为他们分配不同的存放路径。A服务不能读取B服务的数据库路径,这个是通过mongod.lock文件实现的。

mongod.lock中存放的是每个mongodb服务的进程号。

那该路径下具体都有哪些文件呢?

MongoDB学习系列 -- 服务启动以及关闭

我们看到有local数据库、admin数据库、mongod.lock、test数据库,具体每个文件的作用可以参考这篇文章:

2、port

./mongod --dbpath /data/db --port 27017

mongodb服务监听的端口,默认为27017,这个就不需要多说了,只需保证同一台机器上不同的mongodb进程监听不同的端口即可。

3、logpath

./mongod --dbpath /data/db --port 27017 --logpath /var/log/mongod --logappend

日志输出路径,日志内容包括mongodb服务的启动日志以及其他驱动器的connect日志。当初次安装并启动mongodb时,最好看一下日志。这是人们经常忽视的一点,日志中经常含有重要的警告信息,能够帮助避免一些错误。

还有一点,一定确保对于logpath路径具有写权限。而且,新日志会将已有文件覆盖掉,原有的日志记录也会被清除掉,如果想要保留原来的日志,还需要使用 --logappend选项。

延伸:任何服务启动时都最好配置其日志目录。

4、fork 

./mongod --dbpath /data/db --port 27017 --logpath /var/log/mongod --logappend --fork

守护进程的方式运行MongoDB,创建服务器进程。

5、master

./mongod --dbpath /data/db --port 27017 --logpath /var/log/mongod --logappend --fork --master

是否已主进程启动mongodb服务,这个在主从复制的时候会用到。

6、auth

./mongod --dbpath /data/db --port 27017 --logpath /var/log/mongod --logappend --fork --master --auth

开启安全检查,开启安全检查之后驱动器链接mongodb服务时必须指定用户密码。

7、oplogSize

./mongod --dbpath /data/db --port 27017 --logpath /var/log/mongod --logappend --fork --master --auth --oplogsize 2000

指定oplogSize的大小。oplog存储在local数据库里,用来记录master mongodb服务的写操作,然后同步到slave 服务器上。

8、slaveOK

./mongod --dbpath /data/db --port 27017 --logpath /var/log/mongod --logappend --fork --master --slaveOK

开启服务器的读扩展。将读操作分散都各个从服务器上,扩展 服务读性能。

服务的配置还有很多,如果我们想要在服务启动时配置很多的选项,像我们上面的这种形式很显然不合适。怎么办呢?我们可以像mysql那样,将配置抽离到一个配置文件中,在服务启动时直接指定配置文件即可。

新建一个mongodb.conf配置文件

dbpath = D:\mongodb\data\db
port = 27017
fork = true
auth = true
logpath = D:\mongodb\data\log\mongod.log
logappend = true
...
...

通过--config或者-f 来指示mongodb服务按照配置文件中的内容启动服务。

./mongod --config /usr/local/mongodb/mongod.conf

 

二、mongoDB关闭

服务的关闭和服务的启动一样重要,mongodb服务的关闭有以下几种方式:

1、CTRL-C

当服务是作为前端进程运行在终端时,直接使用CTRL -C即可,否则就要使用下面的两种方式了。

2、KILL

mongodb作为一个服务是有进程号的,通过向进程发送信号就可以kill掉进程,也即关闭mongodb服务。进程可以接送三种类型的信号:SININT SINTERM SINKILL。

当进程接收到SININT或者SINTERM信号的时候会稳妥的退出,也即是说会等到当前运行的操作或者文件预分配完成(需要一段时间),关闭所有打开的链接,将缓存的数据刷新到磁盘,最后停止。

千万不要向运行中的服务直接发送SINKILL信号(kill -9 pid)。这样会导致数据库直接关闭,上面讲到的步骤都会被忽略,这会使数据文件损坏。要是真的发生了不幸,一定要在启动备份之前修复数据库。

3、shutdown

该方式也是比较稳妥的方式,这是管理命令,需要在admin数据库下使用。

> use admin
switched to db admin
> db.shutdownServer()

note:我们前面一直在使用数据库shell:mongo。一般都假定它和mongod运行在一台机器上,还假定mongod绑定了默认端口。如果不是这样的话,可以在启动的时候指定这些参数,让shell连接另一台服务器。如下所示:

./mongo http://www.example.com:27000/admin

其中,www.example.com是机器的hostname,也可以换成ip;27000是服务的监听端口;admin是连接之后默认的数据库。

OK,关于mongodb服务的启动关闭终于总结完了。

相关标签: NoSql