MongoDB學習筆記——數據庫安裝及配置


MongoDB數據庫安裝

MongoDB官方下載地址:https://www.mongodb.com/download-center

首先需要根據Windows版本選擇正確的MongoDB版本進行安裝,可以在命令行中輸入以下指令檢查Windows版本:

wmic os get osarchitecture

32 位版本的 MongoDB 只支持 2G 以下的數據庫,只適用於測試及評估。

點擊下載下來的安裝文件進行MongoDB數據庫安裝,如:mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi

安裝完成后在通過命令行跳轉至MongoDB安裝目錄,輸入以下指令檢查是否安裝成功

mongod -v

MongoDB需要創建一個目錄來保存所有的數據文件,默認情況下MongoDB的數據目錄是C:\data\db\(見上方截圖),所以需要在C盤下創建對應的文件夾,也可以通過命令行設置

MongoDB的數據目錄

mongod --dbpath "d:\mongodb\data"  

控制台輸出會顯示 waiting for connections 消息,這表示 mongod 進程已經成功運行。

啟動MongoDB有2種方式,一是直接指定配置參數,二是指定配置文件

  1. 直接指定配置參數

    例如:

    mongod --dbpath "d:\mongodb\data"  

  2. 指定配置文件

    由於官方下載的安裝包中沒有默認的配置文件,若想使用配置文件只能自己創建,創建配置文件時確保使用ASCII編碼格式,Mongod 實例不支持配置文件使用非 ASCII 編碼格式,包括UTF-8。自2.6版本以后MongoDB使用YAML文件格式,注意:YAML 不支持制表符縮進︰ 用空格代替。

    例如:

    mongod --config d:\mongodb\mongodb.conf 

 

配置參數詳解:

 mongodb 3.0之后配置文件采用YAML格式,這種格式非常簡單,使用<key>:<value>表示,開頭使用"空格"作為縮進。需要注意的是,":"之后有value的話,需要緊跟一個空格,如果key只是表示層級,則無需在":"后增加空格(比如:systemLog:后面既不需要空格)。按照層級,每行4個空格縮進,第二級則8個空格,依次輪推,頂層則不需要空格縮進

1. systemLog

systemLog.verbosity

integer

日志文件輸出的級別,越大級別越低。

systemLog.quite

boolean

在quite模式下會限制輸出信息:

數據庫命令輸出,副本集活動,連接接受事件,連接關閉事件。

systemLog.traceAllExceptions

string

打印verbose信息來調試,用來記錄證額外的異常日志。

systemLog.syslogFacility

string,默認為user

指定syslog日志信息的設備級別。需要指定--syslog來使用這個選項。

systemLog.path string

發送所有的診斷信息日志,默認重啟后會覆蓋。

systemLog.logAppend

boolean

是否啟用追加日志。

systemLog.logRotate

string

V3.0.0版本中新特性,默認值為rename

使用rename,mongod或mongos通過在文件名稱末尾添加UTC(GMT)時間戳的方式重命名當前的日志文件,然后打開新的日志文件,關閉之前舊的日志文件,並發送所有新的日志信息到新的日志文件中。

reopen 關閉並重新打開日志文件遵循典型的Linux/Unix日志切換行為。當使用Linux/Unix logrotate工具時,使用reopen避免日志丟失。

如果指定reopen時,也必須同時使用—logappend

 

systemLog.destination

string

指定一個文件或syslog。如果指定為文件,必須同時指定systemLog.path

systemLog.timeStampFormat

string,默認為iso8601-local

日志信息中的時間戳格式:

ctime,iso8601-utc,iso8601-local

 

2. processManagement

processManagement.pidFilePath

string

指定進程的ID,與--fork配合使用,不指定則不會創建。

processManagement.fork

boolean,默認為false

是守護進程在后台運行。

 

3. net

net.port

interger,默認為27017

mongodb實例監聽的端口號。

net.bindIp

string,2.6版本默認為127.0.0.1

指定mongodb實例綁定的ip,為了綁定多個ip,可以使用逗號分隔。

net.maxIncomingConnections

integer 默認為1000000

mongodb實例接受的最多連接數,如果高於操作系統接受的最大線程數,設置無效。

net.wireObjectCheck

boolean,默認為true

檢查文檔的有效性。會稍微影響性能。

net.http.enabled

boolean,默認為false

打開http端口,會導致更多的不安全因素。

net.unixDomainSocket.enabled

boolean,默認為false

停止UNIX domain socket監聽。

mongodb實例會一直監聽UNIX

socket,除非net.unixDomainSocket.enabled設置為true,bindIp沒有設置,bindIp沒有默認指定為127.0.0.1。

net.unixDomainSocket.pathPrefix

string,默認為/tmp

unix Socket所在的路徑。

net.ipv6

boolean,默認為false

打開IPV6功能,默認為關閉的。

net.http.JSONPEnabled

boolean,默認為false

運行json訪問http端口,打開會導致更多的不安全因素。

net.http.RESTInterfaceEnabled

boolean,默認為false

即使http接口選項關閉,打開也會暴露http接口,會導致更多的不安全因素。

 

4. security

security.keyFile

string

指定分片集或副本集成員之間身份驗證的key文件存儲位置。

security.clusterAuthMode

string

集群認證中利用到這個模式,如果使用x.509安全機制,可以在這里指定。

keyFile,sendKeyFile,sendX509,x509

默認的mongodb發行版是不支持ssl的,可以使用專業版的或重新自行編譯mongodb。

security.authorization

string,默認為disabled

打開訪問數據庫和進行操作的用戶角色認證。

enabled,disabled

 

5. operationProfiling

operationProfiling.slowOpThresholdMs

integer,默認100

指定慢查詢時間,單位毫秒,如果打開功能,則向system.profile集合寫入數據。

operationProfiling.mode

integer,默認0

改變分析日志輸出級別。

0,1,2,分別對應關閉,僅打開慢查詢,記錄所有操作。

 

6. storage

storage.dbPath

string

指定數據文件的路徑。

storage.directoryPerDB

boolean,默認關閉

指定存儲每個數據庫文件到單獨的數據目錄。如果在一個已存在的系統使用該選項,需要事先把存在的數據文件移動到目錄。

storage.indexBuildRetry

boolean,默認為true

指定數據庫在索引建立過程中停止,重啟后是否重新建立索引。

storage.preallocDataFiles

boolean,默認true

是否預先分片好數據文件。

storage.nsSize

integer,默認16

指定命名空間的大小,即.ns后綴的文件。最大為2047MB,16M文件可以提供大約24000個命名空間。

storage.quota.enforced

boolean,默認false

限制每個數據庫的數據文件數目。可以通過maxFilesPerDB調整數目。

storage.quota.maxFilesPerDB

integer,默認為8

限制每個數據庫的數據文件數目。

storage.smallFiles

boolean,默認為false

限制mongodb數據文件大小為512MB,減小journal文件從1G到128M,適用於有很多數量小的數據文件。

storage.syncPeriodSecs

number,默認60

mongodb文件刷新頻率,盡量不要在生產環境下修改。

storage.repairPath

string,默認為指定dbpath下的_tmp目錄。

指定包含數據文件的根目錄,進行--repair操作。

storage.journal.enabled

boolean,默認64bit為true,32bit為false

記錄操作日志,防止數據丟失。

storage.journal.debugFlags

integer

提供數據庫在非正常關閉下的功能測試。

storage.journal.commitIntervalMs

number,默認為100或30

journal操作的最大間隔時間。可以是2-300ms之間的值,低的值有助於持久化,但是會增加磁盤的額外負擔。

如果journal和數據文件在同一磁盤上,默認為100ms。如果在不同的磁盤上為30ms。

如果強制mongod提交日志文件,可以指定j:true,指定后,時間變為原來的三分之一。

 

7. replication

replication.oplogSizeMB

integer,默認為磁盤的5%

指定oplog的最大尺寸。對於已經建立過oplog.rs的數據庫,指定無效。

replication.replSetName

string

指定副本集的名稱。

replication.secondaryIndexPrefetch

string,默認為all

指定副本集成員在接受oplog之前是否加載索引到內存。默認會加載所有的索引到內存。

none,不加載;all,加載所有;_id_only,僅加載_id。

 

8. sharding

sharding.clusterRole

string

指定分片集的mongodb角色。

configsvr,配置服務器,端口27019;shardsvr,分片實例,端口27018。

sharding.archiveMovedChunks

integer

在塊移動過程中,該選項強制mongodb實例保存所有移動的文檔到moveChunk目錄。

 

9. auditLog

auditLog.destination

string

syslog,以json格式保存身份驗證到syslog,windows下不可用,serverity級別為info,facility級別為user。

console,以json格式輸出信息到標准輸出。

file,以json格式輸出信息到文件。

auditLog.format

string

指定輸出文件的格式

JSON,輸出json格式文件;BSON,輸出bson二進制格式文件。

auditLog.path

string

如果--auditDestination的值為file,則該選項指定文件路徑。

auditLog.filter

document

指定過濾系統身份驗證的格式為:

{ atype : <expression> }

{ atype: <expression>, "param.db": <database> }

 

10. snmp

snmp.subagent

boolean

運行SNMP為一個子代理。

snmp.master

boolean

運行SNMP為一個主進程。

 

僅mongos選項

replication.localPingThresholdMs

integer,默認15

當客戶端選定副本集進行讀操作時受影響。

sharding.autoSplit

boolean

防止mongos自動在一個分片集合中插入元數據。

因為任何的mongos都可以創建一個分離,如果打開該選項,將會導致分片不平衡,需要謹慎使用。

sharding.configDB

string

指定配置數據庫。可以使用逗號分隔一到三個服務器。

如果處於不同的位置,需要指定最近的一個。

不能移除配置服務器,即使不可用或者離線了。

sharding.chunkSize

integer,默認為64

每個塊的大小。64MB是理想大小,小的會導致不能在不同節點間高效移動。

僅僅在初始化時有效。

 

參考示例:

systemLog:

quiet: true

#syslogFacility: <string>

path: D:\mongodb\logs\mongodb.log

logAppend: true

destination: file

timeStampFormat: "iso8601-utc"

storage:

dbPath: D:\mongodb\data

indexBuildRetry: true

#repairPath: <string>

journal:

enabled: true

directoryPerDB: true

#syncPeriodSecs: 60

engine: wiredTiger

wiredTiger:

engineConfig:

cacheSizeGB: 10

directoryForIndexes: true

collectionConfig:

blockCompressor: zlib

indexConfig:

prefixCompression: true

#processManagement:

#fork: true

#pidFilePath: D:\mongodb\run\mongodb.pid

net:

port: 27017

#bindIp: 127.0.0.1

maxIncomingConnections: 65536

wireObjectCheck: true

ipv6: false

http:

enabled: false

JSONPEnabled: false

RESTInterfaceEnabled: false

#ssl:

#mode: <string>

#PEMKeyFile: <string>

#PEMKeyPassword: <string>

#security:

#keyFile: D:\mongodb\keyfile

#clusterAuthMode: keyFile

#authorization: disabled

operationProfiling:

slowOpThresholdMs: 100

mode: slowOp

replication:

oplogSizeMB: 50

replSetName: reptestname

secondaryIndexPrefetch: all

#enableMajorityReadConcern: <boolean>

#sharding:

#clusterRole: <string>

#archiveMovedChunks: <boolean>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM