1. 程式人生 > >MongoDB 3.x 安裝配置

MongoDB 3.x 安裝配置

thp 只需要 esp per except ber export 數據引擎 edt

目錄

見右側目錄欄導航)
- 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
mongod.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 安裝配置