1安装MongoDB
当前系统:
[dave@www.cndba.cn software]# uname -r
3.10.0-1062.el7.x86_64
[dave@www.cndba.cn software]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.7 (Maipo)
[dave@www.cndba.cn software]#
从官方下载安装文件:
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.6.tgz
[dave@www.cndba.cn software]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.6.tgz
--2021-05-26 11:30:28-- https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.6.tgz
Resolving fastdl.mongodb.org (fastdl.mongodb.org)... 13.226.214.25, 13.226.214.4, 13.226.214.26, ...
Connecting to fastdl.mongodb.org (fastdl.mongodb.org)|13.226.214.25|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 72077387 (69M) [application/gzip]
Saving to: ‘mongodb-linux-x86_64-rhel70-4.4.6.tgz’
100%[=================================================================================>] 72,077,387 17.2MB/s in 4.8s
2021-05-26 11:30:34 (14.3 MB/s) - ‘mongodb-linux-x86_64-rhel70-4.4.6.tgz’ saved [72077387/72077387]
解压缩安装包:
[dave@www.cndba.cn software]# tar zxf mongodb-linux-x86_64-rhel70-4.4.6.tgz
[dave@www.cndba.cn software]# ll
drwxr-xr-x 3 root root 100 May 26 11:35 mongodb-linux-x86_64-rhel70-4.4.6
-rw-r--r-- 1 root root 72077387 May 8 01:10 mongodb-linux-x86_64-rhel70-4.4.6.tgz
[dave@www.cndba.cn software]#
将安装文件移动到/usr/local 目录下:
[dave@www.cndba.cn software]# mv mongodb-linux-x86_64-rhel70-4.4.6 /usr/local/mongodb
创建数据文件和日志文件存放目录:
[dave@www.cndba.cn software]# mkdir -p /mongodb/data
[dave@www.cndba.cn software]# mkdir -p /mongodb/logs
配置环境变量:在/etc/profile 里添加如下内容,并执行source 生效:
PATH=$PATH:/usr/local/mongodb/bin
直接命令行后台启动MongoDB:
[dave@www.cndba.cn ~]# mongod --dbpath=/mongodb/data --logpath=/mongodb/logs/mongodb.log --logappend --port=27017 --fork
about to fork child process, waiting until server is ready for connections.
forked process: 43055
child process started successfully, parent exiting
[dave@www.cndba.cn ~]#
查看版本信息:
[dave@www.cndba.cn ~]# mongo
MongoDB shell version v4.4.6
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("85bffbc7-cef5-4919-9ea5-7f3cbf1a6860") }
MongoDB server version: 4.4.6
Welcome to the MongoDB shell.
For interactive help, type "help".
> db.version()
4.4.6
>
2 MongoDB 的启动与关闭
2.1 启动
MongoDB 的启动除了上节看到的使用—fork直接命令行后台启动之外,也可以将配置信息写入配置文件后,通过指定配置文件的方式来启动。
MongoDB的配置文件是/etc/mongo.conf,我们使用tgz包安装时不会创建该文件,如果通过yum方式安装会默认创建该文件。 我们这里可以直接创建配置文件,并写入参数即可。
我们这里添加的参数如下:
[dave@www.cndba.cn ~]# cat /etc/mongo.conf
#数据库数据存放目录
dbpath=/mongodb/data
#数据库日志存放目录
logpath=/mongodb/logs/mongodb.log
#以追加的方式记录日志
logappend = true
#端口号 默认为27017
port=27017
#以后台方式运行进程
fork=true
#开启用户认证
auth=true
#关闭http接口,默认关闭http端口访问
#nohttpinterface=true
#mongodb所绑定的ip地址
#bind_ip = 127.0.0.1
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=true
[dave@www.cndba.cn ~]#
使用mongo.conf 启动MongoDB:
[dave@www.cndba.cn ~]# mongod --config /etc/mongo.conf
about to fork child process, waiting until server is ready for connections.
forked process: 49945
child process started successfully, parent exiting
[dave@www.cndba.cn ~]# ps -ef|grep mongo
root 43880 17422 0 11:49 pts/2 00:00:00 mongo
root 49945 1 52 12:03 ? 00:00:04 mongod --config /etc/mongo.conf
root 50046 41028 0 12:03 pts/3 00:00:00 grep --color=auto mongo
[dave@www.cndba.cn ~]#
2.2 关闭
相对于启动,停止MongoDB 可以在系统层面和DB层面进行操作。
2.2.1 主机系统层面直接采用KILL
最基本的方法就是向 MongoDB 服务器发送一个 SIGINT 或者 SIGTERM 信号。如果服务器是作为前台进程运行在终端的,就直接按 Ctrl-C。否则,就用 kill这种命令发出信号。
假设 mongod的 PID是 10014,就可以kill -2 10014(SIGINT)或者kill 10014(SIGTERM)。 当 mongod 收到 SIGINT 或者 SIGTERM 时,会安全的退出。也就是说会等到当前运行的操作或者文件预分配完成(需要一些时间),关闭所有打开的连接,将缓存的数据刷新到磁盘,最后停止。
注意:千万不要向运行中的 MongoDB 发送 SIGKILL(kill -9)。这样会导致数据库直接关闭,上面讲到的步骤都将被忽略,这会使数据文件损毁。
2.2.2 DB 层面
DB层面可以直接使用 shutdown 命令,{“ghutdown” ∶1)。这是管理命令,要在 admin 数据库下使用。
[dave@www.cndba.cn ~]# mongo
MongoDB shell version v4.4.6
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("88eab4d3-37f4-4066-b7c1-d9d7e0c40df0") }
MongoDB server version: 4.4.6
> use admin
switched to db admin
> db.shutdownServer()
server should be down...
>
或者命令行直接执行:
[dave@www.cndba.cn ~]# ps -ef|grep mongo
root 43880 17422 0 11:49 pts/2 00:00:00 mongo
root 49945 1 1 12:03 ? 00:00:11 mongod --config /etc/mongo.conf
root 56678 41028 0 12:19 pts/3 00:00:00 grep --color=auto mongo
[dave@www.cndba.cn ~]# mongod -f /etc/mongo.conf --shutdown
killing process with pid: 49945
[dave@www.cndba.cn ~]#
3 配置开机自启动服务
3.1 方法1: 将开机命令添加到rc.local 中
可以直接将mongodb启动项目追加入rc.local保证mongodb在服务器开机时启动:
echo "mongod --config /etc/mongo.conf" >> /etc/rc.local
3.2 方法2: 配置成系统服务
在/etc/init.d目录下创建mongodb 文件,并添加如下内容:
[dave@www.cndba.cn ~]# cat /etc/init.d/mongodb
#!/bin/sh
#
#chkconfig: 2345 80 90
#description: mongodb
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
start() {
/usr/local/mongodb/bin/mongod -f /etc/mongo.conf
}
stop() {
/usr/local/mongodb/bin/mongod -f /etc/mongo.conf --shutdown
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
[dave@www.cndba.cn ~]#
[dave@www.cndba.cn ~]# chmod a+x /etc/init.d/mongodb
[dave@www.cndba.cn ~]# chkconfig --add mongodb
[dave@www.cndba.cn ~]# chkconfig mongodb on
[dave@www.cndba.cn ~]# chkconfig --list
mongodb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rhnsd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[dave@www.cndba.cn ~]# service mongodb stop
There doesn't seem to be a server running with dbpath: /mongodb/data
[dave@www.cndba.cn ~]# ps -ef|grep mongo
root 43880 17422 0 11:49 pts/2 00:00:00 mongo
root 60509 41028 0 12:28 pts/3 00:00:00 grep --color=auto mongo
[dave@www.cndba.cn ~]# service mongodb start
about to fork child process, waiting until server is ready for connections.
forked process: 60543
child process started successfully, parent exiting
[dave@www.cndba.cn ~]# service mongodb stop
killing process with pid: 60543
[dave@www.cndba.cn ~]#
4 附录1:MongoDB的配置参数含义
--quiet # 安静输出
--port arg # 指定服务端口号,默认端口27017
--bind_ip arg # 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP
--logpath arg # 指定MongoDB日志文件,注意是指定文件不是目录
--logappend # 使用追加的方式写日志
--pidfilepath arg # PID File 的完整路径,如果没有设置,则没有PID文件
--keyFile arg # 集群的私钥的完整路径,只对于Replica Set 架构有效
--unixSocketPrefix arg # UNIX域套接字替代目录,(默认为 /tmp)
--fork # 以守护进程的方式运行MongoDB,创建服务器进程
--auth # 启用验证
--cpu # 定期显示CPU的CPU利用率和iowait
--dbpath arg # 指定数据库路径
--diaglog arg # diaglog选项 0=off 1=W 2=R 3=both 7=W+some reads
--directoryperdb # 设置每个数据库将被保存在一个单独的目录
--journal # 启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里
--journalOptions arg # 启用日志诊断选项
--ipv6 # 启用IPv6选项
--jsonp # 允许JSONP形式通过HTTP访问(有安全影响)
--maxConns arg # 最大同时连接数 默认2000
--noauth # 不启用验证
--nohttpinterface # 关闭http接口,默认关闭27018端口访问
--noprealloc # 禁用数据文件预分配(往往影响性能)
--noscripting # 禁用脚本引擎
--notablescan # 不允许表扫描
--nounixsocket # 禁用Unix套接字监听
--nssize arg (=16) # 设置信数据库.ns文件大小(MB)
--objcheck # 在收到客户数据,检查的有效性,
--profile arg # 档案参数 0=off 1=slow, 2=all
--quota # 限制每个数据库的文件数,设置默认为8
--quotaFiles arg # number of files allower per db, requires --quota
--rest # 开启简单的rest API
--repair # 修复所有数据库run repair on all dbs
--repairpath arg # 修复库生成的文件的目录,默认为目录名称dbpath
--slowms arg (=100) # value of slow for profile and console log
--smallfiles # 使用较小的默认文件
--syncdelay arg (=60) # 数据写入磁盘的时间秒数(0=never,不推荐)
--sysinfo # 打印一些诊断系统信息
--upgrade # 如果需要升级数据库
* Replicaton 参数
--------------------------------------------------------------------------------
--fastsync # 从一个dbpath里启用从库复制服务,该dbpath的数据库是主库的快照,可用于快速启用同步
--autoresync # 如果从库与主库同步数据差得多,自动重新同步,
--oplogSize arg # 设置oplog的大小(MB)
* 主/从参数
--------------------------------------------------------------------------------
--master # 主库模式
--slave # 从库模式
--source arg # 从库 端口号
--only arg # 指定单一的数据库复制
--slavedelay arg # 设置从库同步主库的延迟时间
* Replica set(副本集)选项:
--------------------------------------------------------------------------------
--replSet arg # 设置副本集名称
* Sharding(分片)选项
--------------------------------------------------------------------------------
--configsvr # 声明这是一个集群的config服务,默认端口27019,默认目录/data/configdb
--shardsvr # 声明这是一个集群的分片,默认端口27018
--noMoveParanoia # 关闭偏执为moveChunk数据保存
参数的更多说明参考官方手册:
https://docs.mongodb.com/manual/reference/configuration-options/
版权声明:本文为博主原创文章,未经博主允许不得转载。
- 上一篇:MongoDB 最佳实践
- 下一篇:故障案例 | lsof是怎么