mongodb.conf配置檔案詳解
啟動MongoDB有2種方式,一是直接指定配置引數,二是指定配置檔案。這裡先介紹配置檔案,啟動方式如下:
1.mongod --config /etc/mongodb.conf
配置如下:
verbose:日誌資訊冗餘。預設false。提高內部報告標準輸出或記錄到logpath配置的日誌檔案中。要啟用verbose或啟用verbosity 用vvvv引數,如:
1.verbose = true
2.vvvv = true
ps:啟動verbose冗長資訊,它的級別有 vv~vvvvv,v越多級別越高,在日誌檔案中記錄的資訊越詳細。
port:埠。預設27017,MongoDB的預設服務TCP埠,監聽客戶端連線。要是埠設定小於1024,比如1021,則需要root許可權啟動,不能用mongodb帳號啟動,(普通帳號即使是27017也起不來)否則報錯:[mongo --port=1021 連線]
1.ERROR: listen(): bind() failed errno:13 Permission denied for socket: 127.0.0.1:1021
1.port = 27017
bind_ip:繫結地址。預設127.0.0.1,只能透過本地連線。程式繫結和監聽來自這個地址上的應用連線。要是需要給其他伺服器連線,則需要註釋掉這個或則把IP改成本機地址,如192.168.200.201[其他伺服器用 mongo --host=192.168.200.201 連線] ,可以用一個逗號分隔的列表繫結多個IP地址。
1.bind_ip = 127.0.0.1
maxConns:最大連線數。預設值:取決於系統(即的ulimit和檔案描述符)限制。MongoDB中不會限制其自身的連線。當設定大於系統的限制,則無效,以系統限制為準。這對於客戶端建立很多“表”,允許連線超時而不關閉“表”的時候很有用。設定該值的高於連線池和總連線數的大小,以防止尖峰時候的連線。注意:不能設定該值大於20000。
1.maxConns = 100
objcheck:強制驗證客戶端請求。2.4的預設設定為objcheck成為true,在早期版本objcheck預設為false。因為它強制驗證客戶端請求,確保客戶端絕不插入無效檔案到資料庫中。對於巢狀文件的物件,會有一點效能影響。設定noobjcheck 關閉。
1.objcheck = true
2.#noobjcheck = false
noobjcheck:同上,預設關閉false。
1.#noobjcheck = false
logpath:指定日誌檔案,該檔案將儲存所有的日誌記錄、診斷資訊。除非另有指定,mongod將所有的日誌資訊輸出到標準輸出。如果沒有指定logappend,重啟則日誌會進行覆蓋操作。
1.logpath=/var/log/mongodb/mongodb.log
logappend:寫日誌的模式:設定為true為追加。預設是覆蓋。如果未指定此設定,啟動時MongoDB的將覆蓋現有的日誌檔案。
1.logappend=true
syslog:日誌輸出都傳送到主機的syslog系統,而不是標準輸出到logpath指定日誌檔案。syslog和logpath不能一起用,會報錯:
1.Cant use both a logpath and syslog
1.syslog = true
pidfilepath:程式ID,沒有指定則啟動時候就沒有PID檔案。預設預設。
1.pidfilepath = /var/run/mongo.pid
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.”
1.keyFile = /srv/mongodb/keyfile
nounixsocket:套接字檔案,預設為false,有生成socket檔案。當設定為true時,不會生成socket檔案。
1.nounixsocket = false
unixSocketPrefix:套接字檔案路徑,預設/tmp
1.unixSocketPrefix = /tmp
fork:是否後臺執行,設定為true 啟動 程式在後臺執行的守護程式模式。預設false。
1.fork = true
auth:使用者認證,預設false。不需要認證。當設定為true時候,進入資料庫需要auth驗證,當資料庫裡沒有使用者,則不需要驗證也可以操作。直到建立了第一個使用者,之後操作都需要驗證。
1.auth = true
比如:透過db.addUser('sa','sa') 在admin庫下面建立一個超級使用者,只能在在admin庫下面先認證完畢了:ab.auth('sa','sa') ,才能去別的庫操作,不能在其他庫驗證。這樣連線資料庫也需要指定庫:
1.mongo -usa -psa admin #sa 帳號連線admin
1.mongo -uaa -paa test #aa 帳號連線test
noauth:禁止使用者認證,預設true。同上
1.noauth = true
cpu:設定為true會強制mongodb每4s報告cpu利用率和io等待,把日誌資訊寫到標準輸出或日誌檔案。預設為false。
1.cpu = true
開啟日誌會出現:
1.Mon Jun 10 10:21:42.241 [snapshotthread] cpu: elapsed:4000 writelock: 0%
dbpath:資料存放目錄。預設: word-spacing: 0px; 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;">/data/db/
1.dbpath=/var/lib/mongodb
diaglog:建立一個非常詳細的故障排除和各種錯誤的診斷日誌記錄。預設0。設定為1,為在dbpath目錄裡生成一個diaglog.開頭的日誌檔案,他的值如下:
1.Value Setting
2.0 off. No logging. #關閉。沒有記錄。
3.1 Log write operations. #寫操作
4.2 Log read operations. #讀操作
5.3 Log both read and write operations. #讀寫操作
6.7 Log write and some read operations. #寫和一些讀操作
設定不等於0,日誌會每分鐘flush 一次:
1.Mon Jun 10 11:16:17.504 [DataFileSync] flushing diag log
2.Mon Jun 10 11:17:17.442 [DataFileSync] flushing diag log
產生的日誌可以用mongosniff 來檢視:要是mongosniff[類似於tcpdump的作為一個MongoDB的特定的TCP/ IP網路流量]出現報錯和具體用法,請見這裡,之前先執行:apt-get install libpcap-dev
1.root@m3:/var/lib/mongodb# mongosniff --source DIAGLOG diaglog.51b542a9
注意:當重新設定成0,會停止寫入檔案,但mongod還是繼續保持開啟該檔案,即使它不再寫入資料檔案。如果你想重新命名,移動或刪除診斷日誌,你必須完全關閉mongod例項。
1.diaglog = 3
directoryperdb:設定為true,修改資料目錄儲存模式,每個資料庫的檔案儲存在DBPATH指定目錄的不同的資料夾中。使用此選項,可以配置的MongoDB將資料儲存在不同的磁碟裝置上,以提高寫入吞吐量或磁碟容量。預設為false。
注意:要是在執行一段時間的資料庫中,開啟該引數,會導致原始的資料都會消失(註釋引數則會回來)。因為資料目錄都不同了,除非遷移現有的資料檔案到directoryperdb產生的資料庫目錄中,如:
root@m3:/var/lib/mongodb# mv test.* test/
把test資料檔案遷移到directoryperdb產生的資料庫test目錄中。 所以需要在規劃好之後確定是否要開啟。
1.directoryperdb = ture
01.原始資料結構:
02.journal
03.mongod.lock
04.local.0
05.local.1
06.local.ns
07.test.0
08.test.1
09.test.ns
10.
11.開啟 directoryperdb,並把資料檔案遷移到相關的資料目錄後的結構:
12.
13.journal
14.mongod.lock
15.local/local.0
16.local/local.1
17.local/local.ns
18.test/test.0
19.test/test.1
20.test/test.ns
journal:日誌,(redo log,更多的介紹請看這裡和這裡)
預設值:(在64位系統)true。
預設值:(32位系統)false。
設定為true,啟用操作日誌,以確保寫入永續性和資料的一致性,會在dbpath目錄下建立journal目錄。
設定為false,以防止日誌永續性的情況下,並不需要開銷。為了減少磁碟上使用的日誌的影響,您可以啟用nojournal,並設定為true。
注意:在64位系統上禁用日誌必須使用帶有nojournal的。
1.#journal=true
2.journal=false
32位OS:
1.Tue Jun 11 12:17:09.628 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.
2.Tue Jun 11 12:17:09.628 [initandlisten] ** 32 bit builds are limited to less than 2GB of data (or less with --journal).
64位OS:
1.Tue Jun 11 12:29:34 [initandlisten] journal dir=/var/lib/mongodb/journal
2.Tue Jun 11 12:29:34 [initandlisten] recover : no journal files present, no recovery needed
nojournal:禁止日誌
預設值:(在64位系統)false。
預設值:(32位系統)true。
設定nojournal為true關閉日誌,64位,2.0版本後的mongodb預設是啟用 journal日誌。
1.nojournal=true
journalCommitInterval:刷寫提交機制,預設是30ms或則100ms。較低的值,會更消耗磁碟的效能。
此選項接受2和300毫秒之間的值:
如果單塊裝置提供日誌和資料檔案,預設的日記提交時間間隔為100毫秒。
如果不同的塊裝置提供的日誌和資料檔案,預設的日記提交的時間間隔為30毫秒。
1.journalCommitInterval=100
ipv6:是否支援ipv6,預設false。
jsonp:是否允許JSONP訪問透過一個HTTP介面,預設false。
nohttpinterface:是否禁止http介面,即28017 埠開啟的服務。預設false,支援。
1.nohttpinterface = false
noprealloc:預分配方式。
預設false:使用預分配方式來保證寫入效能的穩定,預分配在後臺進行,並且每個預分配的檔案都用0進行填充。這會讓MongoDB始終保持額外的空間和空餘的資料檔案,從而避免了資料增長過快而帶來的分配磁碟空間引起的阻塞。
設定noprealloc= true來禁用預分配的資料檔案,會縮短啟動時間,但在正常操作過程中,可能會導致效能顯著下降。
1.noprealloc = false
noscripting:是否禁止指令碼引擎。預設是false:不禁止。ture:禁止
要是設定成true:執行一些指令碼的時候會出現:
1.JavaScript execution failed: group command failed: { "ok" : 0, "errmsg" : "server-side JavaScript execution is disabled" }
1.#noscripting = true <====> noscripting = false
notablescan:是否禁止表掃描操作。預設false:不禁止,ture:禁止
禁止要是執行表掃描會出現:
1.error: { "$err" : "table scans not allowed:test.emp", "code" : 10111 }
可以動態修改設定:
1.db.adminCommand({setParameter:1, notablescan:false})
1.#notablescan = true <====> notablescan = false
nssize:名稱空間的檔案(即NS)的預設大小,預設16M,最大2G。
所有新建立的預設大小名稱空間的檔案(即NS)。此選項不會影響現有的名稱空間的檔案的大小。預設值是16M位元組,最大大小為2 GB。讓小資料庫不讓浪費太多的磁碟空間,同時讓大資料在磁碟上有連續的空間。
1.-rwxrwxrwx 1 mongodb zhoujy 16M 6月 11 14:44 test.0
2.-rwxrwxrwx 1 mongodb zhoujy 32M 6月 1 21:36 test.1
3.-rwxrwxrwx 1 mongodb zhoujy 16M 6月 11 14:44 test.ns
4.drwxr-xr-x 2 root root 4.0K 6月 10 11:57 _tmp
1.nssize = 16
profile:資料庫分析等級設定。記錄一些操作效能到標準輸出或則指定的logpath的日誌檔案中,預設0:關閉。
1.級別 設定
2.0 關。無分析。
3.1 開。僅包括慢操作。
4.2 開。包括所有操作。
控制 Profiling 的開關和級別:2種
第一種是直接在啟動引數裡直接進行設定或則啟動MongoDB時加上–profile=級別,其資訊儲存在 生成的system.profile 中。
1.profile = 2
第二種是在客戶端用db.setProfilingLevel(級別)命令來實時配置,其資訊儲存在 生成的system.profile 中。
1.[initandlisten] creating profile collection: local.system.profile
1.> db.setProfilingLevel(2)
2.{ "was" : 0, "slowms" : 100, "ok" : 1 }
3.> db.getProfilingStatus()
4.{ "was" : 2, "slowms" : 100 }
預設情況下,mongod的禁用分析。資料庫分析可以影響資料庫的效能,因為分析器必須記錄和處理所有的資料庫操作。所以在需要的時候用動態修改就可以了。
slowms:記錄profile分析的慢查詢的時間,預設是100毫秒。具體同上。
1.slowms = 200
1.> db.getProfilingStatus()
2.{ "was" : 2, "slowms" : 200 }
quota:配額,預設false。是否開啟配置每個資料庫的最多檔案數的限制。當為true則用quotaFiles來配置最多檔案的數量。
1.quota = true
quotaFiles:配額數量。每個資料庫的資料檔案數量的限制。此選項需要quota為true。預設為8。
1.quotaFiles = 8
rest: 預設false,設定為true,使一個簡單的 REST API。
1.rest = true
設定為true,開啟後,在MongoDB預設會開啟一個HTTP協議的埠提供REST的服務(nohttpinterface = false),這個埠是你Server埠加上1000,即28017,預設的HTTP埠是資料庫狀態頁面,(開啟後,web頁面的Commands 行中的命令都可以點進去)。mongodb自帶的REST,不支援 增、刪、改,同時也不支援 許可權認證。
詳細資訊見這裡和這裡。
repair:修復資料庫操作,預設是false。
設定為true時,啟動後修復所有資料庫,設定這個選項最好在命令列上,而不是在配置檔案或控制指令碼。如:
命令列修復:
1.> db.repairDatabase('xxx')
2.{ "ok" : 1 }
3.> db.repairDatabase()
4.{ "ok" : 1 }
啟動時修復:
1.repair = true
1.root@m3:/var/log/mongodb# mongod --repair
啟動時修復,需要關閉journal,否則報錯:
1.Can't specify both --journal and --repair options.
並且啟動時,用控制檔案指定引數和配置檔案裡指定引數的方式進行修復之後,(修復資訊見log),需要再禁用repair引數才能啟用mongodb。
注意:mongod修復時,需要重寫所有的資料庫檔案。如果在同一個帳號下不能執行修復,則需要執行chown修改資料庫檔案的許可權。
repairpath:修復路徑,預設是在dbpath路徑下的_tmp 目錄。
1.drwxr-xr-x 2 root root 4.0K 6月 11 20:23 _tmp
smallfiles:是否使用較小的預設檔案。預設為false,不使用。
設定為true,使用較小的預設資料檔案大小。smallfiles減少資料檔案的初始大小,並限制他們到512M,也減少了日誌檔案的大小,並限制他們到128M。
如果資料庫很大,各持有少量的資料,會導致mongodb建立很多檔案,會影響效能。
1.smallfiles = true
syncdelay:刷寫資料到日誌的頻率,透過fsync運算元據。預設60秒。
1.syncdelay = 60
預設就可以,不需要設定。不會對日誌檔案(journal files)有影響
警告:如果設定為0,SYNCDELAY 不會同步到磁碟的記憶體對映檔案。在生產系統上,不要設定這個值。
sysinfo:系統資訊,預設false。
設定為true,mongod會診斷系統有關的頁面大小,數量的物理頁面,可用物理??頁面的數量輸出到標準輸出。
1.Tue Jun 11 21:07:15.031 sysinfo:
2.Tue Jun 11 21:07:15.035 page size: 4096
3.Tue Jun 11 21:07:15.035 _SC_PHYS_PAGES: 256318
4.Tue Jun 11 21:07:15.035 _SC_AVPHYS_PAGES: 19895
當開啟sysinfo引數的時候,只會列印上面的資訊,不會啟動mongodb的程式。所以要關閉該引數,才能開啟mongodb。
upgrade:升級。預設為false。
當設定為true,指定DBPATH,升級磁碟上的資料格式的檔案到最新版本。會影響資料庫操作,更新後設資料。大部分情況下,不需要設定該值。
traceExceptions:是否使用內部診斷。預設false。
1.traceExceptions = false
quiet:安靜模式。
1.quiet = true
setParameter:2.4的新引數,指定啟動選項配置。想設定多個選項則用一個setParameter選項指定,可以setParameter的引數請見這裡,詳情請見這裡
宣告setParameter設定在這個檔案中,使用下面的格式:
1.setParameter = <parameter>=<value>
如配置檔案裡設定syncdelay:
1.setParameter = syncdelay= 55,notablescan = true,journalCommitInterval = 50,traceExceptions = true
Replication Options 複製選項
replSet:使用此設定來配置複製副本集。指定一個副本集名稱作為引數,所有主機都必須有相同的名稱作為同一個副本集。
oplogSize:指定的複製操作日誌(OPLOG)的最大大小。mongod建立一個OPLOG的大小基於最大可用空間量。對於64位系統,OPLOG通常是5%的可用磁碟空間。
一旦mongod第一次建立OPLOG,改變oplogSize將不會影響OPLOG的大小。
fastsync:預設為false。在副本集下,設定為true,從一個dbpath裡啟用從庫複製服務,該dbpath的資料庫是主庫的快照,可用於快速啟用同步,否則的mongod將嘗試執行初始同步。注意:如果資料不完全同步,mongod指定fastsync開啟,secondary或slave與主永久不同步,這可能會導致顯著的一致性問題。
replIndexPrefetch:2.2版本出現的新引數,預設是all。可以設定的值有:all, none, and _id_only。只能在副本集(replSet)中使用。預設情況下,secondary副本集的成員將載入所有索引到記憶體中(從OPLOG之前的操作有關的)。您可以修改此行為,使secondary只會載入_id索引。指定_id_或none,防止mongod的任何索引載入到記憶體。
Master/Slave Replication:主從複製的相關設定
master:預設為false,當設定為true,則配置當前例項作為主例項。
1.master = true
slave:預設為false,當設定為true,則配置當前例項作為從例項。
1.slave = true
source:預設為空,格式為:<host><:port>。用於從例項的複製:設定從的時候指定該選項會讓從複製指定主的例項
1.source = 127.0.0.1:30001
only:預設為空,用於從選項,指定一個資料庫進行復制。
1.only = abc #只同步abc集合(庫)
slavedelay:設定從庫同步主庫的延遲時間,用於從設定,預設為0。
1.slavedelay = 60 #延遲60s同步主資料
autoresync:預設為false,用於從設定。是否自動重新同步。設定為true,如果落後主超過10秒,會強制從自動重新同步。如果oplogSize太小,此設定可能有問題。如果OPLOG大小不足以儲存主的變化狀態和從的狀態變化之間的差異,這種情況下強制重新同步是不必要的。當設定autoresync選項設定為false,10分鐘內從不會進行大於1次的自動重新同步。
1.autoresync = false
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-1985098/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- redis 配置檔案詳解Redis
- haproxy配置檔案詳解
- redis配置檔案詳解Redis
- SSH配置檔案詳解
- zookeeper配置檔案詳解
- nginx配置檔案詳解Nginx
- WCF配置檔案詳解
- Nginx的配置檔案詳解Nginx
- vim的配置檔案詳解
- Hibernate配置檔案詳解
- BIND配置檔案詳解(三)
- Spring 配置檔案詳解Spring
- vsftpd配置檔案詳解FTP
- Nagios配置檔案詳解iOS
- spring配置檔案詳解Spring
- Nginx 配置檔案引數詳解Nginx
- 屬性配置檔案詳解(2)
- Docker Compose 配置檔案詳解Docker
- MyBatis--主配置檔案詳解MyBatis
- influx詳解(二):配置檔案UX
- Struts配置檔案詳細講解
- redis配置檔案引數詳解Redis
- Mysql配置檔案my.ini配置項詳解MySql
- MyBatis 核心配置檔案詳細內容詳解MyBatis
- linux的啟動配置檔案inittab檔案詳解Linux
- PHP配置檔案詳解php.iniPHP
- nginx.conf 配置檔案詳解Nginx
- Tomcat 的 Server 檔案配置詳解!!!TomcatServer
- linux網路卡配置檔案詳解Linux
- Python之ini配置檔案詳解Python
- git config配置檔案詳解Git
- Maven pom.xml檔案配置詳解MavenXML
- MySQL 配置檔案 (my.ini) 詳解MySql
- sysctl.conf檔案配置詳解
- compose配置檔案引數詳解
- resin配置檔案的詳細解釋
- log4j配置檔案詳解
- Mysql配置檔案my.cnf詳解MySql