MongoDB作为NoSql数据库中最关系型的,是解决传统关系型数据库在业务不断复杂,数据量逐渐变大的大数据解决方案之一。
本文主要以官网为参考主题,介绍在搭建生产环境时,可能有用的配置,接下来的一段时间可能会频繁更改,一遍阅读官网,一遍记录。
写在前面:Mongod(分片存储数据),Mongos(路由处理)
参考:https://docs.mongodb.com/manual/reference/configuration-options/#processmanagement-options
1.配置文件配置之前的准备知识
配置文件的格式以YAML的的形式为基础,在此模式下,不可使用Tab,只能使用空格。
配置文件的作用是为了代替在进入MongoDB后使用命令行对环境配置,官方有这种配置与命令想对应的匹配文档。
mongod --config /etc/mongod.conf mongos --config /etc/mongos.conf mongod -f /etc/mongod.conf mongos -f /etc/mongos.conf
与Hive等相同,使用 -f 来直接指定config文件
2.生产环境所选配置
2.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.
verbosity
:[0-5],是控制输出级别的控制项,0是默认级别,是存储信息的,1-5是Debug的级别。分别为Debug, Info,Warn,Error,Fatal
systemLog.
quiet:boolean,限制输出的数量,不建议再生产环境中设置为此模式。
systemLog.
traceAllExceptions,boolean,打印详细的调试信息。用于支持相关故障排除的其他日志记录。
systemLog.
syslogFacility,String,默认为user,用于将日志信息存放在系统的sysLog中,但是需要将systemLog.destination属性设置为syslog,再生产环境中官网并不建议这么做,具体在下面说明。
systemLog.
path,用于指定log文件的输出位置。对于linux用户,init脚本并不希望systemlog.path从默认值更改。如果使用Linux包并更改systemlog.path,则必须使用自己的init脚本并禁用内置脚本。
systemLog.
logAppend,,默认为False。如果为true,则当mongos或mongod实例重新启动时,mongos或mongod会在现有日志文件的结尾追加新条目。如果没有这个选项,mongod将备份现有日志并创建一个新文件。
systemLog.
logRotate,[rename,reopen],默认为rename。但是按照linux的思想,建议设置为reopen,可减少损失log的情况,但是需要将systemLog.logAppend设置为true。
systemLog.
destination,[file,syslog],如果不设置此项,则会在标准输出中打印信息和Debug信息,设置为file时,也需要对
systemLog.
path进行设置。
systemLog.
timeStampFormat,[ctime,iso8601-utc,iso8601-local],用于表示log日志中的时间的表示。
systemLog.component.accessControl.
verbosity:与
systemLog.
verbosity作用类似。
systemLog.component.command.
verbosity:与
systemLog.
verbosity作用类似。
systemLog.component.control.
verbosity,等等,都是设置存储日志级别的。
2.2 processManagement Options
processManagement: fork: <boolean> pidFilePath: <string> timeZoneInfo: <string>
processManagement.
fork:boolean,默认为false。可将mogos和mogod设为守护进程。在linux环境下如果将mongo设为守护进程,则需要使用自己的init脚本,并取消built-in脚本。(与
systemLog.
path相似
)。
processManagement.
pidFilePath。指定一个文件位置,用于保存Mongos或Mongod进程的进程ID,Mongos或Mongod将在其中写入其PID。这对于结合processManagement.fork设置跟踪mongos或mongod进程很有用。如果没有指定的processmanagement.pidfilepath选项,进程将不创建PID文件。
processManagement.
timeZoneInfo。
从中加载时区数据库的完整路径。如果不提供此选项,MongoDB将使用其内置的时区数据库。Linux和MacOS包中包含的配置文件默认情况下将时区数据库路径设置为/usr/share/zoneinfo。内置时区数据库是Olson/IANA时区数据库的副本。随着MongoDB的发布而更新,但时区数据库的发布周期不同于MongoDB的发布周期。可以从https://downloads.mongodb.org/olson_tz_db/timezonedb-latest.zip下载最新版本的时区数据库的副本。
2.3 cloud Options
cloud: monitoring: free: state: <string> tags: <string>
Free monitoring provides information about your deployment, including:
- Operation Execution Times
- Memory Usage
- CPU Usage
- Operation Counts
监控提供之前24小时上传的数据,这中间如果进行了取消free-Monitor,开启监控,则也是提供上24小时的数据。
使用访问控制运行时,用户必须具有以下权限才能启用自由监视并获取状态:
{ resource: { cluster : true }, actions: [ "setFreeMonitoring", "checkFreeMonitoringStatus" ] }
The built-in clusterMonitor角色提供了这个权限。
cloud.monitoring.free.
state:[runtime(default),on,off]。一旦启用,自由监控状态将保持启用状态,直到显式禁用。也就是说,每次启动服务器时不需要重新启用。
runtime:您可以在运行时启用或禁用免费监视。
on :在启动时启用免费监控;即注册以进行免费监控。如果在启动时启用,则不能在运行时禁用自由监视。
off :在启动时禁用免费监视,无论您以前是否注册了免费监视。如果在启动时禁用,则无法在运行时启用自由监视。
cloud.monitoring.free.
tags:用于描述环境上下文的可选标记。标签可以作为启动时free-MongoDB云监控注册的一部分发送。
2.4 net Options
net: port: <int> bindIp: <string> bindIpAll: <boolean> maxIncomingConnections: <int> wireObjectCheck: <boolean> ipv6: <boolean> unixDomainSocket: enabled: <boolean> pathPrefix: <string> filePermissions: <int> ssl: sslOnNormalPorts: <