前面我們瞭解了mongod啟動命令需指定一些參數啟動服務,本節我們通過設定檔的方式配置這些參數載入配置。
./bin/mongod --config ./conf/mongodb.conf(或./bin/mongod -f ./conf/mongodb.conf)
配置(mongod.conf)參數說明如下。
1.基本配置
#verbose:日誌資訊冗餘。預設false。提高內部報告標準輸出或記錄到logpath配置的記錄檔中。要啟用verbose或啟用verbosity 用vvvv參數verbose = true#啟動verbose冗長資訊,它的層級有 vv~vvvvv,v越多層級越高,在記錄檔中記錄的資訊越詳細。vvvv = true#port:連接埠。預設27017,MongoDB的預設服務TCP連接埠,監聽用戶端串連。要是連接埠設定小於1024,比如1021,則需要root許可權啟動,不能用mongodb帳號啟動port = 27017#bind_ip:綁定地址。預設127.0.0.1,只能通過本地串連。進程綁定和監聽來自這個地址上的應用串連。要是需要給其他伺服器串連,則需要注釋掉這個或則把IP改成本機地址,可以用一個逗號分隔的列表綁定多個IP地址。bind_ip = 127.0.0.1#maxConns:最大串連數。預設值:取決於系統(即的ulimit和檔案描述符)限制。MongoDB中不會限制其自身的串連。當設定大於系統的限制,則無效,以系統限制為準。這對於用戶端建立很多“表”,允許連線逾時而不關閉“表”的時候很有用。設定該值的高於串連池和總串連數的大小,以防止尖峰時候的串連。注意:不能設定該值大於20000。maxConns = 1000#objcheck:強制驗證用戶端請求。2.4的預設設定為objcheck成為true,在早期版本objcheck預設為false。因為它強制驗證用戶端請求,確保用戶端絕不插入無效檔案到資料庫中。對於嵌套文檔的對象,會有一點效能影響。設定noobjcheck 關閉。objcheck = true#noobjcheck = false#logpath:指定記錄檔,該檔案將儲存所有的日誌記錄、診斷資訊。除非另有指定,mongod將所有的日誌資訊輸出到標準輸出。如果沒有指定logappend,重啟則日誌會進行覆蓋操作。logpath= /home/mongo/mongodb-2.6.8/logs/mongodb.log#logappend:寫日誌的模式:設定為true為追加。預設是覆蓋。如果未指定此設定,啟動時MongoDB的將覆蓋現有的記錄檔。logappend=true#syslog:日誌輸出都發送到主機的syslog系統,而不是標準輸出到logpath指定記錄檔。syslog和logpath不能一起用,會報錯:syslog = true#pidfilepath:進程ID,沒有指定則啟動時候就沒有PID檔案。預設預設。pidfilepath = /home/mongo/mongodb-2.6.8/data/mongo.pid#keyFile:指定儲存身分識別驗證資訊的密鑰檔案的路徑。預設預設。keyFile = /home/mongo/mongodb-2.6.8/data/keyfile#nounixsocket:通訊端檔案,預設為false,有產生socket檔案。當設定為true時,不會產生socket檔案。nounixsocket = false#unixSocketPrefix:通訊端檔案路徑,預設/tmpunixSocketPrefix = /home/mongo/mongodb-2.6.8/tmp#fork:是否後台運行,設定為true 啟動 進程在後台啟動並執行守護進程模式。預設false。fork = true#auth:使用者認證,預設false。不需要認證。當設定為true時候,進入資料庫需要auth驗證,當資料庫裡沒有使用者,則不需要驗證也可以操作。直到建立了第一個使用者,之後操作都需要驗證。比如:通過db.addUser('sa','sa')在admin庫下面建立一個超級使用者,只能在在admin庫下面先認證完畢了:ab.auth('sa','sa'),才能去別的庫操作,不能在其他庫驗證。這樣串連資料庫也需要指定庫:#mongo -usa -psa admin #sa 帳號串連admin#mongo -uaa -paa test #aa 帳號串連testauth = true#noauth:禁止使用者認證,預設truenoauth = true#cpu:設定為true會強制mongodb每4s報告cpu利用率和io等待,把日誌資訊寫到標準輸出或記錄檔。預設為false。cpu = true#dbpath:資料存放目錄。預設:/data/db/dbpath= /home/mongo/mongodb-2.6.8/data/#diaglog:建立一個非常詳細的故障排除和各種錯誤的診斷記錄。預設0。設定為1,為在dbpath目錄裡產生一個diaglog.開頭的記錄檔,設定不等於0,日誌會每分鐘flush一次。產生的日誌可以用mongosniff來查看,當重新設定成0,會停止寫入檔案,但mongod還是繼續保持開啟該檔案,即使它不再寫入資料檔案。如果你想重新命名,移動或刪除診斷記錄,你必須完全關閉mongod執行個體。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. #寫和一些讀操作#directoryperdb:設定為true,修改資料目錄存放模式,每個資料庫的檔案儲存體在DBPATH指定目錄的不同的檔案夾中。使用此選項,可以配置的MongoDB將資料存放區在不同的磁碟裝置上,以提高寫入輸送量或磁碟容量。預設為false。要是在運行一段時間的資料庫中,開啟該參數,會導致原始的資料都會消失(注釋參數則會回來)。因為資料目錄都不同了,除非遷移現有的資料檔案到directoryperdb產生的資料庫目錄中,所以需要在規劃好之後確定是否要開啟。directoryperdb = ture#journal:日誌,(redo log,更多的介紹請看這裡和這裡)。預設值:(在64位系統)true。預設值:(32位系統)false。#設定為true,啟用動作記錄,以確保寫入持久性和資料的一致性,會在dbpath目錄下建立journal目錄。#設定為false,以防止日誌持久性的情況下,並不需要開銷。為了減少磁碟上使用的日誌的影響,您可以啟用nojournal,並設定為true。#注意:在64位系統上禁用日誌必須使用帶有nojournal的。journal = false#nojournal:禁止日誌,預設值:(在64位系統)false。預設值:(32位系統)true。#設定nojournal為true關閉日誌,64位,2.0版本後的mongodb預設是啟用 journal日誌。nojournal = true#journalCommitInterval:刷寫提交機制,預設是30ms或則100ms。較低的值,會更消耗磁碟的效能。此選項接受2和300毫秒之間的值:#如果單塊裝置提供日誌和資料檔案,預設的日記提交時間間隔為100毫秒。#如果不同的塊裝置提供的日誌和資料檔案,預設的日記提交的時間間隔為30毫秒。journalCommitInterval = 100#ipv6:是否支援ipv6,預設false。ipv6 = true#jsonp:是否允許JSONP訪問通過一個HTTP介面,預設false。jsonp = true#nohttpinterface:是否禁止http介面,即28017 連接埠開啟的服務。預設false,支援。nohttpinterface = false#noprealloc:預分配方式。預設false:使用預分配方式來保證寫入效能的穩定,預分配在後台進行,並且每個預分配的檔案都用0進行填充。這會讓MongoDB始終保持額外的空間和空餘的資料檔案,從而避免了資料增長過快而帶來的分配磁碟空間引起的阻塞。設定noprealloc= true來禁用預分配的資料檔案,會縮短啟動時間,但在正常操作過程中,可能會導致效能顯著下降。noprealloc = false#noscripting:是否禁止指令碼引擎。預設是false:不禁止。ture:禁止,要是設定成true:運行一些指令碼的時候會出現:"server-side JavaScript execution is disabled" noscripting = true #notablescan:是否禁止表掃描操作。預設false:不禁止,ture:禁止,禁止要是執行表掃描會出現:"table scans not allowed"notablescan = true#nssize:命名空間的檔案(即NS)的預設大小,預設16M,最大2G。所有新建立的預設大小命名空間的檔案(即NS)。此選項不會影響現有的命名空間的檔案的大小。預設值是16M位元組,最大大小為2 GB。讓小資料庫不讓浪費太多的磁碟空間,同時讓大資料在磁碟上有連續的空間。nssize = 16#profile:資料庫分析等級設定。記錄一些操作效能到標準輸出或則指定的logpath的記錄檔中,預設0:關閉。#0 關。無分析。#1 開。僅包括慢操作。#2 開。包括所有操作。#控制 Profiling 的開關和層級:2種,第一種是直接在啟動參數裡直接進行設定或則啟動MongoDB時加上–profile=層級,其資訊儲存在 產生的system.profile 中。第二種是在用戶端用db.setProfilingLevel(層級)命令來即時配置,其資訊儲存在 產生的system.profile 中。預設情況下,mongod的禁用分析。資料庫分析可以影響資料庫的效能,因為分析器必須記錄和處理所有的資料庫操作。所以在需要的時候用動態修改就可以了。profile = 2#slowms:記錄profile分析的慢查詢的時間,預設是100毫秒。具體同上。slowms = 200#quota:配額,預設false。是否開啟配置每個資料庫的最多檔案數的限制。當為true則用quotaFiles來配置最多檔案的數量。quota = true#quotaFiles:配額數量。每個資料庫的資料檔案數量的限制。此選項需要quota為true。預設為8。quotaFiles = 8#rest: 預設false,設定為true,使一個簡單的 REST API。設定為true,開啟後,在MongoDB預設會開啟一個HTTP協議的連接埠提供REST的服務(nohttpinterface=false),這個連接埠是你Server連接埠加上1000,即28017,預設的HTTP連接埠是資料庫狀態頁面,(開啟後,web頁面的Commands行中的命令都可以點進去)。mongodb內建的REST,不支援增、刪、改,同時也不支援 許可權認證。rest = true#repair:修複資料庫操作,預設是false。設定為true時,啟動後修複所有資料庫,設定這個選項最好在命令列上,而不是在設定檔或控制指令碼。啟動時修複,需要關閉journal.並且啟動時,用控制檔案指定參數和設定檔裡指定參數的方式進行修複之後,(修複資訊見log),需要再禁用repair參數才能啟用mongodb。注意:mongod修複時,需要重寫所有的資料庫檔案。如果在同一個帳號下不能運行修複,則需要運行chown修改資料庫檔案的許可權。repair = true#repairpath:修複路徑,預設是在dbpath路徑下的_tmp 目錄。repairpath = _tmp#smallfiles:是否使用較小的預設檔案。預設為false,不使用。設定為true,使用較小的預設資料檔案大小。smallfiles減少資料檔案的初始大小,並限制他們到512M,也減少了記錄檔的大小,並限制他們到128M。如果資料庫很大,各持有少量的資料,會導致mongodb建立很多檔案,會影響效能。smallfiles = true#syncdelay:刷寫資料到日誌的頻率,通過fsync操作資料。預設60秒。預設就可以,不需要設定。不會對記錄檔(journal files)有影響。警告:如果設定為0,SYNCDELAY 不會同步到磁碟的記憶體對應檔。在生產系統上,不要設定這個值。syncdelay = 60#sysinfo:系統資訊,預設false。設定為true,mongod會診斷系統有關的頁面大小,數量的物理頁面,可用物理??頁面的數量輸出到標準輸出。當開啟sysinfo參數的時候,只會列印上面的資訊,不會啟動mongodb的程式。所以要關閉該參數,才能開啟mongodb。sysinfo = false#upgrade:升級。預設為false。當設定為true,指定DBPATH,升級磁碟上的資料格式的檔案到最新版本。會影響資料庫操作,更新中繼資料。大部分情況下,不需要設定該值。upgrade = false#traceExceptions:是否使用內部診斷。預設false。traceExceptions = false#quiet:安靜模式。quiet = true#setParameter:2.4的新參數,指定啟動選項配置。想設定多個選項則用一個setParameter選項指定.格式:setParameter = <parameter>=<value>,如設定檔裡設定syncdelay:setParameter = syncdelay= 55,notablescan = true,journalCommitInterval = 50,traceExceptions = true
2.複製選項(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的任何索引載入到記憶體。
3.主從複製的相關設定
#master:預設為false,當設定為true,則配置當前執行個體作為主執行個體。master = true#slave:預設為false,當設定為true,則配置當前執行個體作為從執行個體。slave = true#source:預設為空白,格式為:<host><:port>。用於從執行個體的複製:設定從的時候指定該選項會讓從複製指定主的執行個體。source = 127.0.0.1:30001#only:預設為空白,用於從選項,指定一個資料庫進行複製。only = abc #只同步abc集合(庫)#slavedelay:設定從庫同步主庫的延遲時間,用於從設定,預設為0。slavedelay = 60 #延遲60s同步主要資料#autoresync:預設為false,用於從設定。是否自動重新同步。設定為true,如果落後主超過10秒,會強制從自動重新同步。如果oplogSize太小,此設定可能有問題。如果OPLOG大小不足以儲存主的變化狀態和從的狀態變化之間的差異,這種情況下強制重新同步是不必要的。當設定autoresync選項設定為false,10分鐘內從不會進行大於1次的自動重新同步。autoresync = false
4.分區叢集設定
configsvr #設定是否是佈建服務,預設連接埠27019,預設目錄/data/configdb
shardsvr #設定是否分區,預設連接埠27018
配置執行個體:conf/mongod.conf
#port 連接埠號碼port=23000#dbpath 資料庫隱藏檔目錄dbpath=/home/mongo/mongodb-2.6.8/data#logpath 日誌路徑logpath=/home/mongo/mongodb-2.6.8/logs/mongodb.log#logappend 日誌追加形式 false:重新啟動覆蓋檔案logappend=true#fork 後台啟動fork=true#設定記錄層級#0 - 關閉效能分析,測試環境可以開啟,產生環境關閉,對效能有很大影響;#1 - 開啟慢查詢日誌,執行時間大於100毫秒的語句#2 - 開啟所有動作記錄profile=1
啟動:./bin/mongod -f conf/mongod.conf