mongodb 3.0及以上版本基本都是使用 yaml 語法格式的配置文件, 啟動 mongo 實例如果不是指定配置文件或參數命令啟動, 會按照默認的參數啟動。
mongodb目錄結構:
data目錄:存在數據
etc目錄存放配置文件:核心配置文件mongodb.conf,keyfile文件,集群信息文件cluster.conf
log目錄:存放日志
tmp目錄:存放臨時文件,進程id
########################################
├── data/ ├── etc/ │ ├── cluster.conf │ ├── keyfile │ └── mongodb.conf ├── log/ │ └── mongodb.log └── tmp/ └── mongo_28000.pid
[work@xxx etc]$ cat mongodb.conf systemLog: destination: file path: /home/work/mongodb/mongo_28042/log/mongodb.log logAppend: true #net Options net: maxIncomingConnections: 10240 port: 28042 bindIp: 10.136.42.3,localhost serviceExecutor : adaptive #security Options security: authorization: 'enabled' keyFile: /home/work/mongodb/mongo_28042/etc/glc-test clusterAuthMode: "keyFile" #storage Options storage: engine: "wiredTiger" directoryPerDB: true dbPath: /home/work/mongodb/mongo_28042/data #indexBuildRetry: true journal: enabled: true commitIntervalMs: 100 wiredTiger: engineConfig: directoryForIndexes: true cacheSizeGB: 10 journalCompressor: "snappy" collectionConfig: blockCompressor: "snappy" indexConfig: prefixCompression: true #wiredTigerCollectionConfigString: lsm #wiredTigerIndexConfigString: lsm #replication Options replication: oplogSizeMB: 65536 #64GB replSetName: glc-test #operationProfiling Options operationProfiling: slowOpThresholdMs: 100 mode: "slowOp" processManagement: fork: true pidFilePath: /home/work/mongodb/mongo_28042/tmp/mongo_28042.pid
net.serviceExecutor配置:
net.serviceExecutor 輸入:string 默認值:同步 版本3.6中的新功能。 確定線程和執行模型mongos或mongod用於執行客戶端請求。該--serviceExecutor選項接受以下值之一: 值 描述 synchronous 該mongos或mongod使用同步網絡和管理上的每個連接其網絡的線程池。以前版本的MongoDB以這種方式管理線程。
adaptive 的mongos或mongod與管理關於每個請求基礎的線程的自適應線程池使用了新的實驗性異步網絡模式。當存在比數據庫請求更多的非活動連接時,此模式應具有更一致的性能並使用更少的資源。
日志配置:
logpath:指定日志文件,該文件將保存所有的日志記錄、診斷信息。除非另有指定,mongod將所有的日志信息輸出到標准輸出。如果沒有指定logappend,重啟則日志會進行覆蓋操作。 1.logpath=/var/log/mongodb/mongodb.log logappend:寫日志的模式:設置為true為追加。默認是覆蓋。如果未指定此設置,啟動時MongoDB的將覆蓋現有的日志文件。 1.logappend=true
# 配置言樣例:
systemLog: destination: file logAppend: true path: /data/mongo/test/mongodb.log quiet: true
配置詳解#啟用日志文件,默認啟用
journal=true
#這個選項可以過濾掉一些無用的日志信息,若需要調試使用請設置為false quiet=false
# 日志文件位置 logpath=/usr/local/mongodb/log/mongodb.log # 以追加方式寫入日志 logappend=true
#################################################
# 是否以守護進程方式運行 fork = true # 默認27017 port = 27017 # 數據庫文件位置 dbpath=/data/mongodata
###########################################################
# 啟用定期記錄CPU利用率和 I/O 等待 #cpu = true # 是否以安全認證方式運行,默認是不認證的非安全方式 #auth = true #noauth = true # 詳細記錄輸出 #verbose = true # Inspect all client data for validity on receipt (useful for # developing drivers)用於開發驅動程序時驗證客戶端請求 #objcheck = true # Enable db quota management # 啟用數據庫配額管理 #quota = true # 設置oplog記錄等級 # Set oplogging level where n is # 0=off (default) # 1=W # 2=R # 3=both # 7=W+some reads #diaglog=0 # Diagnostic/debugging option 動態調試項 #nocursors = true # Ignore query hints 忽略查詢提示 #nohints = true # 禁用http界面,默認為localhost:28017 #nohttpinterface = true # 關閉服務器端腳本,這將極大的限制功能 # Turns off server-side scripting. This will result in greatly limited # functionality #noscripting = true # 關閉掃描表,任何查詢將會是掃描失敗 # Turns off table scans. Any query that would do a table scan fails. #notablescan = true # 關閉數據文件預分配 # Disable data file preallocation. #noprealloc = true # 為新數據庫指定.ns文件的大小,單位:MB # Specify .ns file size for new databases. # nssize = # Replication Options 復制選項 # in replicated mongo databases, specify the replica set name here #replSet=setname # maximum size in megabytes for replication operation log #oplogSize=1024 # path to a key file storing authentication info for connections # between replica set members #指定存儲身份驗證信息的密鑰文件的路徑 #keyFile=/path/to/keyfile ————————配置文件詳解———————— MongoDB各配置參數詳細說明: 1、verbose: 日志信息冗余。默認false。提高內部報告標准輸出或記錄到logpath配置的日志文件中。要啟用verbose或啟用verbosity 用vvvv參數, 如:verbose = true 2.vvvv = true ps:啟動verbose冗長信息,它的級別有 vv~vvvvv,v越多級別越高,在日志文件中記錄的信息越詳細。 3、port: 端口。默認27017,MongoDB的默認服務TCP端口,監聽客戶端連接。要是端口設置小於1024,比如1021,則需要root權限啟動,不能用 mongodb帳號啟動,(普通帳號即使是27017也起不來)否則報錯:[mongo --port=1021 連接] ERROR: listen(): bind() failed errno:13 Permission denied for socket: 127.0.0.1:1021 如:port = 27017 4、bind_ip: 綁定地址。默認127.0.0.1,只能通過本地連接。進程綁定和監聽來自這個地址上的應用連接。要是需要給其他服務器連接,則需要注釋掉這個或則 把IP改成本機地址,如192.168.200.201[其他服務器用 mongo --host=192.168.200.201 連接] ,
可以用一個逗號分隔的列表綁定多個IP地址。 如:bind_ip = 127.0.0.1 5、maxConns: 最大連接數。默認值:取決於系統(即的ulimit和文件描述符)限制。MongoDB中不會限制其自身的連接。當設置大於系統的限制,則無效,以系 統限制為准。這對於客戶端創建很多“表”,允許連接超時而不關閉“表”的時候很有用。
設置該值的高於連接池和總連接數的大小,以防止尖峰時 候的連接。注意:不能設置該值大於20000。 如:maxConns = 100 6、objcheck: 強制驗證客戶端請求。2.4的默認設置為objcheck成為true,在早期版本objcheck默認為false。因為它強制驗證客戶端請求,確保客戶端絕不插入無 效文件到數據庫中。對於嵌套文檔的對象,會有一點性能影響。設置noobjcheck 關閉。 如:objcheck = true 7、noobjcheck: 同上,默認關閉false。 如:noobjcheck = false 8、logpath: 指定日志文件,該文件將保存所有的日志記錄、診斷信息。除非另有指定,mongod將所有的日志信息輸出到標准輸出。如果沒有指定logappend, 重啟則日志會進行覆蓋操作。 如:logpath=/var/log/mongodb/mongodb.log 9、logappend:寫日志的模式:設置為true為追加。默認是覆蓋。如果未指定此設置,啟動時MongoDB的將覆蓋現有的日志文件。 如:logappend=true 10、syslog:日志輸出都發送到主機的syslog系統,而不是標准輸出到logpath指定日志文件。syslog和logpath不能一起用,會報錯:Cant use both a logpath and syslog 如:syslog = true 11、pidfilepath: 進程ID,沒有指定則啟動時候就沒有PID文件。默認缺省。 如:pidfilepath = /var/run/mongo.pid 12、keyFile: 指定存儲身份驗證信息的密鑰文件的路徑。默認缺省。詳情見:" word-spacing: 0px; display: inline; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background- color: #ffffff;
-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;">Replica Set Security" and “Replica Set Administration.” 如:.keyFile = /srv/mongodb/keyfile 14、fork: 是否后台運行,設置為true 啟動 進程在后台運行的守護進程模式。默認false。 如:fork = true 15、auth: 用戶認證,默認false。不需要認證。當設置為true時候,進入數據庫需要auth驗證,當數據庫里沒有用戶,則不需要驗證也可以操作。直到創建了第一個用戶,之后操作都需要驗證。 比如:通過db.addUser('sa','sa') 在admin庫下面創建一個超級用戶,只能在在admin庫下面先認證完畢了:ab.auth('sa','sa') ,才能去別的庫操作,不能在其他庫驗證。這樣連接數據庫也需要指定庫: 1.mongo -usa -psa admin #sa 帳號連接admin 1.mongo -uaa -paa test #aa 帳號連接test 如:auth = true