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 命令啟動
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: rs0mongod.conf
配置文件詳解: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
MongoDB 3.x 安裝配置