MongoDB 3.x 安装配置
目录
(见右侧目录栏导航)
- 1. 安装Mongodb
- 1.1 使用二进制包安装
- 1.2 运行MongoDB
- 2. MongoDB 配置文件详解
- 2.1 说明
- 2.2 配置文件格式
- 2.3 配置文件的核心选项
- 2.3.1 systemLog 选项
- 2.3.2 processMangement 选项
- 2.3.3 net 选项
- 2.3.4 storage 选项
- 2.3.5 replication 选项
- 3. 启动/关闭MongoDB服务
- 3.1 通过 mongod 命令启动
- 3.2 通过服务启动
1. 安装Mongodb
官网下载地址:https://www.mongodb.com/download-center/community
官网Centos/RHEL安装教程:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
1.1 使用二进制包安装
(1)安装前准备
OS:CentOS Linux release 7.2
首先安装依赖:
yum install libcurl openssl -y
(2)下载并解压
MongoDB下载中心 这里采用 mongodb-linux-x86_64-rhel70-3.6.10.tgz 版本
[root@mongodb src]# tar xf mongodb-linux-x86_64-rhel70-3.6.10.tgz [root@mongodb src]# mkdir -pv /mongodb mkdir: created directory ‘/mongodb’ [root@mongodb src]# cp -a mongodb-linux-x86_64-rhel70-3.6.10/bin/ /mongodb/
(3)添加MongoDB执行文件到环境变量PATH中
[root@mongodb src]# echo "export PATH=$PATH:/mongodb/bin" >> /etc/profile.d/mongodb.sh [root@mongodb src]# . /etc/profile.d/mongodb.sh
1.2 运行MongoDB
(1)前提
设置系统 ulimit
[root@mongodb src]# egrep -v "^#|^$" /etc/security/limits.conf * soft nproc 655350 * hard nproc 655350 * soft nfile 655350 * soft nfile 655350 [root@mongodb src]# ulimit -SHn 655350
(2)目录
使用默认目录
默认,MongoDB使用mongod用户和使用默认的目录
/var/lib/mongo 数据目录
/var/log/mongodb 日志目录
这里我们不使用默认的目录,采取自行指定目录
创建MongoDB 使用目录
[root@mongodb ~]# mkdir -p /mongodb/{bin,data,etc,log,run}
2. MongoDB 配置文件详解
2.1 说明
配置mongodb有两种方式:
(1)通过mongod和mongos两个命令;
(2)通过配置文件的方式(推荐使用)
2.2 配置文件格式
mongodb 配置文件采用的 YAML格式;
例如:
systemLog: destination: file path: "/var/log/mongodb/mongod.log" logAppend: true storage: journal: enabled: true processManagement: fork: true net: bindIp: 127.0.0.1 port: 27017 setParameter: enableLocalhostAuthBypass: false
2.3 配置文件的核心选项
2.3.1 systemLog 选项
systemLog: verbosity: <int> quiet: <boolean> traceAllExceptions: <boolean> syslogFacility: <string> path: <string> logAppend: <boolean> logRotate: <string> destination: <string> timeStampFormat: <string> component: accessControl: verbosity: <int> command: verbosity: <int>
==================重点参数==================
systemLog.destination
类型:string
作用:指定日志文件的路径,如果设置了这个值,必须指定systemLog.path.如果没有设置,日志会标准的输出到后台
systemLog.path
类型:string
作用:指定日志文件的目录
systemLog.logAppend
类型:boolean
默认值:False
作用:当mongod或mongos重启时,如果为true,将日志追加到原来日志文件内容末尾;如果为false,将创建一个新的日志文件
=========================================
systemLog.timeStampFormat
类型:string
默认值:iso8601-local
作用:为日志添加时间戳。
值 描述
ctime 显示时间戳格式为:Wed Dec 31 18:17:54.811
iso8601-utc 安装iso-8601-utc格式显示:1970-01-01T00:00:00.000Z
iso8601-local 按照iso8601-local格式显示:1969-12-31T19:00:00.000-0500
systemLog.traceAllExceptions
类型:boolean
作用: 为调试打印详细信息,用于支持相关的故障排除。
systemLog.syslogFacility
类型:string
默认值:user
作用:将mongodb使用日志记录到系统日志中,如果要使用这个选项,必须开启--sysylog选项
2.3.2 processMangement 选项
processManagement: fork: <boolean> pidFilePath: <string>
==================重点参数==================
processMangement.fork
类型:Boolean
默认值:False
作用:在前台启动Mongodb进程,如果Session窗口关闭,Mongodb进程也随之停止。不过Mongodb同时还提供了一种后台Daemon方式启动,只需要加上一个"--fork"参数即可,值得注意的是,用到了"--fork"参数就必须启用"--logpath"参数。如下所示:
[root@localhost mongodb]# ./bin/mongod --dbpath=data/db --fork --fork has to be used with --logpath [root@localhost mongodb]# ./bin/mongod --dbpath=data/db --fork --logpath=log/mongodb.log all output going to: /opt/mongodb/log/mongodb.log forked process: 3300
=========================================
2.3.3 net 选项
net: port: <int> bindIp: <string> maxIncomingConnections: <int> wireObjectCheck: <boolean> ipv6: <boolean> unixDomainSocket: enabled: <boolean> pathPrefix: <string> filePermissions: <int> http: enabled: <boolean> JSONPEnabled: <boolean> RESTInterfaceEnabled: <boolean> ssl: sslOnNormalPorts: <boolean> # deprecated since 2.6 mode: <string> PEMKeyFile: <string> PEMKeyPassword: <string> clusterFile: <string> clusterPassword: <string> CAFile: <string> CRLFile: <string> allowConnectionsWithoutCertificates: <boolean> allowInvalidCertificates: <boolean> allowInvalidHostnames: <boolean> disabledProtocols: <string> FIPSMode: <boolean> compression: compressors: <string>
==================重点参数==================
net.port
类型:integer
默认值:27017
作用:设置mongodb的监听TCP端口
net.bindIp
类型:string
作用:设置mongodb服务器监听ip地址,默认是127.0.0.1;如果监听多个ip地址,使用逗号隔开
=========================================
net.maxIncomingConnections
类型:integer
默认值:65536
作用:最大并发链接数
2.3.4 storage 选项
storage: dbPath: <string> indexBuildRetry: <boolean> repairPath: <string> journal: enabled: <boolean> commitIntervalMs: <num> directoryPerDB: <boolean> syncPeriodSecs: <int> engine: <string> mmapv1: preallocDataFiles: <boolean> nsSize: <int> quota: enforced: <boolean> maxFilesPerDB: <int> smallFiles: <boolean> journal: debugFlags: <int> commitIntervalMs: <num> wiredTiger: engineConfig: cacheSizeGB: <number> journalCompressor: <string> directoryForIndexes: <boolean> collectionConfig: blockCompressor: <string> indexConfig: prefixCompression: <boolean> inMemory: engineConfig: inMemorySizeGB: <number>
==================重点参数==================
storage.dbPath
类型:string
默认值:/data/db(linux和macOS系统) ,\data\db(window系统)
作用:设置数据存储文件目录
storage.journal.enabled
类型:boolean
默认值:true(64-bit系统);false(32-bit系统)
作用:开启和关闭journal,为了保证数据文件的有效性和可恢复性;在设置了dbpath之后有效
注:在in-memory存储引擎下不可用
========================================
storage.indexBuildRetry
类型:boolean
默认值:true
作用:开启或关闭是否在mongod下次启动重建不完整的索引。
注:在in-memory存储引擎下不可用
storage.repairPath
类型:string
默认值:在dbpath下的A _tmp_repairDatabase_<num> 文件目录
作用:为进行恢复操作指定目录
注意:仅仅在MMAPv1存储引擎下可用
2.3.5 replication 选项
replication: oplogSizeMB: <int> replSetName: <string> secondaryIndexPrefetch: <string> enableMajorityReadConcern: <boolean>
==================重点参数==================
replication.oplogSizeMB
类型:integer
作用:设置复制日志文件的大小;
replication.replSetName
类型:string
作用:副本集的名称
========================================
综上所有的重点参数,常用副本集配置文件如下:
[root@mongodb ~]# vim /mongodb/etc/mongod.conf
systemLog: destination: file ###日志存储位置 path: /mongodb/log/mongod.log logAppend: true storage: ##journal配置 journal: enabled: true ##数据文件存储位置 dbPath: /mongodb/data/ ##是否一个库一个文件夹 directoryPerDB: true ##数据引擎 engine: wiredTiger ##WT引擎配置 wiredTiger: engineConfig: ##WT最大使用cache(根据服务器实际情况调节) cacheSizeGB: 10 ##是否将索引也按数据库名单独存储 directoryForIndexes: true ##表压缩配置 collectionConfig: blockCompressor: zlib ##索引配置 indexConfig: prefixCompression: true processManagement: fork: true # fork and run in background pidFilePath: /mongodb/run/mongod.pid ##端口配置 net: port: 27017 bindIp: 192.168.118.11 # 配置副本集重要参数(使用副本集群的时候使用,单节点无需次选项) replication: oplogSizeMB: 20 replSetName: rs0
配置文件详解:https://www.cnblogs.com/phpandmysql/p/7763394.html
3. 启动/关闭MongoDB服务
启动、关闭MongoDB的方式有两种:
(1)通过命令mongod 直接启动
(2)编写启动脚本,通过脚本启动(推荐使用)
3.1 通过 mongod 命令启动
启动: [root@mongodb ~]# mongod -f /mongodb/etc/mongod.conf about to fork child process, waiting until server is ready for connections. forked process: 19645 child process started successfully, parent exiting 关闭: [root@mongodb ~]# mongod -f /mongodb/etc/mongod.conf --shutdown killing process with pid: 19645
3.2 通过服务启动
(1)创建服务启动用户:
[root@mongodb ~]# groupadd mongodb [root@mongodb mongodb]# useradd -r -d /mongodb/data -s /sbin/nologin -g mongodb mongodb [root@mongodb ~]# chown -R mongodb:root /mongodb/
(2)编写服务脚本如下:
[root@mongodb ~]# vim /lib/systemd/system/mongod.service [Unit] Description=High-performance, schema-free document-oriented database After=syslog.target network.target [Service] Type=forking User=mongodb ExecStart=/mongodb/bin/mongod -f /mongodb/etc/mongod.conf PrivateTmp=true LimitNOFILE=64000 TimeoutStartSec=180 [Install] WantedBy=multi-user.target
(3)启动与关闭
# 启动MongoDB并开机自启 [root@mongodb mongodb]# systemctl enable mongod ; systemctl start mongod Created symlink from /etc/systemd/system/multi-user.target.wants/mongod.service to /usr/lib/systemd/system/mongod.service. [root@mongodb mongodb]# netstat -ntplu | egrep mongod tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 2421/mongod # 关闭MongoDB [root@mongodb mongodb]# systemctl stop mongod