本文源自:https://www.jianshu.com/p/cc3b14e3621c
MongoDB數據庫詳細配置說明(文章來源於Internet)
啟動MongoDB有2種方式
- 直接指定配置參數
- 指定配置文件。
由配置文件啟動方式如下:
配置如下:
- verbose:日志信息冗余。默認false。提高內部報告標准輸出或記錄到logpath配置的日志文件中。要啟用verbose或啟用verbosity 用vvvv參數,如:
[注]:啟動verbose冗長信息,它的級別有 vv~vvvvv,v越多級別越高,在日志文件中記錄的信息越詳細。
- port:端口。默認27017,MongoDB的默認服務TCP端口,監聽客戶端連接。要是端口設置小於1024,比如1021,則需要root權限啟動,不能用mongodb帳號啟動,(普通帳號即使是27017也起不來)否則報錯:[
mongo --port=1021連接]
- bind_ip:綁定地址。默認127.0.0.1,只能通過本地連接。進程綁定和監聽來自這個地址上的應用連接。要是需要給其他服務器連接,則需要注釋掉這個或則把IP改成本機地址,如
192.168.200.201[其他服務器用mongo --host=192.168.200.201連接] ,可以用一個逗號分隔的列表綁定多個IP地址。
- maxConns:最大連接數。默認值:取決於系統(即的ulimit和文件描述符)限制。MongoDB中不會限制其自身的連接。當設置大於系統的限制,則無效,以系統限制為准。這對於客戶端創建很多“表”,允許連接超時而不關閉“表”的時候很有用。設置該值的高於連接池和總連接數的大小,以防止尖峰時候的連接。
注意:不能設置該值大於20000。
- objcheck: 強制驗證客戶端請求。2.4的默認設置為objcheck成為true,在早期版本objcheck默認為false。因為它強制驗證客戶端請求,確保客戶端絕不插入無效文件到數據庫中。對於嵌套文檔的對象,會有一點性能影響。設置noobjcheck 關閉。
- logpath:指定日志文件,該文件將保存所有的日志記錄、診斷信息。除非另有指定,mongod將所有的日志信息輸出到標准輸出。如果沒有指定logappend,重啟則日志會進行覆蓋操作。
- append:寫日志的模式:設置為true為追加。默認是覆蓋。如果未指定此設置,啟動時MongoDB的將覆蓋現有的日志文件。
- syslog:日志輸出都發送到主機的syslog系統,而不是標准輸出到logpath指定日志文件。syslog和logpath不能一起用,會報錯:
- pidfilepath:進程ID,沒有指定則啟動時候就沒有PID文件。默認缺省。
- keyFile:指定存儲身份驗證信息的密鑰文件的路徑。默認缺省。詳情見:
Replica Set Security” and “Replica Set Administration.
- nounixsocket:套接字文件,默認為false,有生成socket文件。當設置為true時,不會生成socket文件。
-
unixSocketPrefix:套接字文件路徑,默認/tmp
unixSocketPrefix = /tmp -
fork:是否后台運行,設置為true 啟動 進程在后台運行的守護進程模式。默認false。
- auth:用戶認證,默認false。不需要認證。當設置為true時候,進入數據庫需要auth驗證,當數據庫里沒有用戶,則不需要驗證也可以操作。直到創建了第一個用戶,之后操作都需要驗證。
auth = true
比如:通過db.addUser(‘sa’,'sa’) 在admin庫下面創建一個超級用戶,只能在在admin庫下面先認證完畢了:ab.auth(‘sa’,'sa’) ,才能去別的庫操作,不能在其他庫驗證。這樣連接數據庫也需要指定庫:
- noauth:禁止用戶認證,默認true。同上
- cpu:設置為true會強制mongodb每4s報告cpu利用率和io等待,把日志信息寫到標准輸出或日志文件。默認為false。
開啟日志會出現:
- dbpath:數據存放目錄。默認:
/data/db/
- diaglog:創建一個非常詳細的故障排除和各種錯誤的診斷日志記錄。默認0。設置為1,為在dbpath目錄里生成一個diaglog.開頭的日志文件,他的值如下:
| Value | Setting |
|---|---|
| 0 | off. No logging. #關閉。沒有記錄。 |
| 1 | Log write operations. #寫操作 |
| 2 | Log read operations. #讀操作 |
| 3 | Log both read and write operations. #讀寫操作 |
| 7 | Log write and some read operations. #寫和一些讀操作 |
設置不等於0,日志會每分鍾flush 一次:
產生的日志可以用mongosniff來查看:要是mongosniff[類似於tcpdump的作為一個MongoDB的特定的TCP/IP網絡流量]出現報錯和具體用法,請見這里,之前先執行:apt-get install libpcap-dev
注意:當重新設置成0,會停止寫入文件,但mongod還是繼續保持打開該文件,即使它不再寫入數據文件。如果你想重命名,移動或刪除診斷日志,你必須完全關閉mongod實例。
- directoryperdb:設置為true,修改數據目錄存儲模式,每個數據庫的文件存儲在DBPATH指定目錄的不同的文件夾中。使用此選項,可以配置的MongoDB將數據存儲在不同的磁盤設備上,以提高寫入吞吐量或磁盤容量。默認為false。
注意:要是在運行一段時間的數據庫中,開啟該參數,會導致原始的數據都會消失(注釋參數則會回來)。因為數據目錄都不同了,除非遷移現有的數據文件到directoryperdb產生的數據庫目錄中,如:
把test數據文件遷移到directoryperdb產生的數據庫test目錄中。 所以需要在規划好之后確定是否要開啟。
原始數據結構:
開啟 directoryperdb,並把數據文件遷移到相關的數據目錄后的結構:
journal:日志,
默認值:(在64位系統)true。
默認值:(32位系統)false。
設置為true,啟用操作日志,以確保寫入持久性和數據的一致性,會在dbpath目錄下創建journal目錄。
設置為false,以防止日志持久性的情況下,並不需要開銷。為了減少磁盤上使用的日志的影響,您可以啟用nojournal,並設置為true。注意:在64位系統上禁用日志必須使用帶有nojournal的。
32位OS:
64位OS:
nojournal:禁止日志默認值:(在64位系統)false。默認值:(32位系統)true。設置nojournal為true關閉日志,64位,2.0版本后的mongodb默認是啟用 journal日志。
journalCommitInterval:刷寫提交機制,默認是30ms或則100ms。較低的值,會更消耗磁盤的性能。此選項接受2和300毫秒之間的值:
如果單塊設備提供日志和數據文件,默認的日記提交時間間隔為100毫秒。
如果不同的塊設備提供的日志和數據文件,默認的日記提交的時間間隔為30毫秒。
ipv6:是否支持ipv6,默認false。
jsonp:是否允許JSONP訪問通過一個HTTP接口,默認false。
nohttpinterface:是否禁止http接口,即28017 端口開啟的服務。默認false,支持。
noprealloc:預分配方式。默認false:使用預分配方式來保證寫入性能的穩定,預分配在后台進行,並且每個預分配的文件都用0進行填充。這會讓MongoDB始終保持額外的空間和空余的數據文件,從而避免了數據增長過快而帶來的分配磁盤空間引起的阻塞。
設置noprealloc= true來禁用預分配的數據文件,會縮短啟動時間,但在正常操作過程中,可能會導致性能顯著下降。
noscripting:是否禁止腳本引擎。默認是false:不禁止。ture:禁止要是設置成true:運行一些腳本的時候會出現:
notablescan:是否禁止表掃描操作。默認false:不禁止,ture:禁止禁止要是執行表掃描會出現:
可以動態修改設置:
nssize:命名空間的文件(即NS)的默認大小,默認16M,最大2G。所有新創建的默認大小命名空間的文件(即NS)。此選項不會影響現有的命名空間的文件的大小。默認值是16M字節,最大大小為2 GB。讓小數據庫不讓浪費太多的磁盤空間,同時讓大數據在磁盤上有連續的空間。
profile:數據庫分析等級設置。記錄一些操作性能到標准輸出或則指定的logpath的日志文件中,默認0:關閉。
| 級別 | 設置 |
|---|---|
| 0 關 | 無分析。 |
| 1 開 | 僅包括慢操作。 |
| 2 開 | 包括所有操作。 |
控制 Profi[ling]的開關和級別:2種
第一種是直接在啟動參數里直接進行設置或則啟動MongoDB時加上–profile=級別,其信息保存在 生成的system.profile 中。
第二種是在客戶端用db.setProfilingLevel(級別)命令來實時配置,其信息保存在 生成的system.profile 中。
默認情況下,mongod的禁用分析。數據庫分析可以影響數據庫的性能,因為分析器必須記錄和處理所有的數據庫操作。所以在需要的時候用動態修改就可以了。
slowms:記錄profile分析的慢查詢的時間,默認是100毫秒。具體同上。
quota:配額,默認false。是否開啟配置每個數據庫的最多文件數的限制。當為true則用quotaFiles來配置最多文件的數量。
quotaFiles:配額數量。每個數據庫的數據文件數量的限制。此選項需要quota為true。默認為8。
rest: 默認false,設置為true,使一個簡單的 REST API。
設置為true,開啟后,在MongoDB默認會開啟一個HTTP協議的端口提供REST的服務(nohttpinterface = false),這個端口是你Server端口加上1000,即28017,默認的HTTP端口是數據庫狀態頁面,(開啟后,web頁面的Commands 行中的命令都可以點進去)。mongodb自帶的REST,不支持 增、刪、改,同時也不支持 權限認證。
repair:修復數據庫操作,默認是false。
設置為true時,啟動后修復所有數據庫,設置這個選項最好在命令行上,而不是在配置文件或控制腳本。如:
命令行修復:
repair = true
root@m3:/var/log/mongodb# mongod --repair
Can't specify both --journal and --repair options.
drwxr-xr-x 2 root root 4.0K 6月 11 20:23 _tmp
smallfiles = true
syncdelay = 60
Tue Jun 11 21:07:15.031 sysinfo:
Tue Jun 11 21:07:15.035 page size: 4096
Tue Jun 11 21:07:15.035 _SC_PHYS_PAGES: 256318
Tue Jun 11 21:07:15.035 _SC_AVPHYS_PAGES: 19895
traceExceptions = false
quiet = true
setParameter = <parameter>=<value>
setParameter = syncdelay= 55,notablescan = true,journalCommitInterval = 50,traceExceptions = true
master = true
slave = true
source = 127.0.0.1:30001
only = abc #只同步abc集合(庫)
1.slavedelay = 60 #延遲60s同步主數據
autoresync = false
