签到成功

知道了

CNDBA社区CNDBA社区

Redhat 7.7 平台 MongoDB 4.4.6 安装 配置 手册

2021-05-26 12:36 1963 0 原创 MongoDB
作者: dave

1安装MongoDB

当前系统:http://www.cndba.cn/dave/article/4542

[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

创建数据文件和日志文件存放目录:

http://www.cndba.cn/dave/article/4542

[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 ~]#

查看版本信息:http://www.cndba.cn/dave/article/4542http://www.cndba.cn/dave/article/4542

[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直接命令行后台启动之外,也可以将配置信息写入配置文件后,通过指定配置文件的方式来启动。http://www.cndba.cn/dave/article/4542http://www.cndba.cn/dave/article/4542

MongoDB的配置文件是/etc/mongo.conf,我们使用tgz包安装时不会创建该文件,如果通过yum方式安装会默认创建该文件。 我们这里可以直接创建配置文件,并写入参数即可。

我们这里添加的参数如下:http://www.cndba.cn/dave/article/4542

[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层面进行操作。http://www.cndba.cn/dave/article/4542

2.2.1 主机系统层面直接采用KILL

最基本的方法就是向 MongoDB 服务器发送一个 SIGINT 或者 SIGTERM 信号。如果服务器是作为前台进程运行在终端的,就直接按 Ctrl-C。否则,就用 kill这种命令发出信号。

http://www.cndba.cn/dave/article/4542

假设 mongod的 PID是 10014,就可以kill -2 10014(SIGINT)或者kill 10014(SIGTERM)。
当 mongod 收到 SIGINT 或者 SIGTERM 时,会安全的退出。也就是说会等到当前运行的操作或者文件预分配完成(需要一些时间),关闭所有打开的连接,将缓存的数据刷新到磁盘,最后停止。


注意:千万不要向运行中的 MongoDB 发送 SIGKILL(kill -9)。这样会导致数据库直接关闭,上面讲到的步骤都将被忽略,这会使数据文件损毁。http://www.cndba.cn/dave/article/4542

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/

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2262
    原创
  • 3
    翻译
  • 579
    转载
  • 192
    评论
  • 访问:8091557次
  • 积分:4350
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ