MongoDB的安裝及配置檔案選項全解
感謝有奉獻精神的人
轉自:http://www.jb51.net/article/87914.htm
http://my.oschina.net/pwd/blog/399374#navbar-header
安裝部分
1. 安裝包
1.1 mongodb-org
可以自動安裝以下的四個包
1.2 mongodb-org-server
mongod程序和配置檔案,啟動指令碼
1.3 mongodb-org-mongos
mongos程序
1.4 mongodb-org-shell
mongo shell
1.5 mongodb-org-tools
其他mongodb工具,mongoimport,mongoexport,mongodump,mongrestore,mongofiles,bsondump,mongooplog,mongoperf,mongostat,mongotop,(mongosniff)
2. 指令碼檔案
2.1 /etc/rc.d/init.d/mongod
啟動指令碼
2.2 /etc/mongod.conf
配置檔案
3. 安裝mongodb
3.1 配置yum源
1 2 3 4 5 6 |
/etc/yum .repos.d /mongodb .repo ->
[mongodb]
name=MongoDB Repository
baseurl=http: //downloads-distro .mongodb.org /repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
|
如果是32bit系統
1 2 3 4 5 |
[mongodb]
name=MongoDB Repository baseurl=http: //downloads-distro .mongodb.org /repo/redhat/os/i686/
gpgcheck=0
enabled=1
|
3.2 安裝mongodb版本
1 |
sudo
yum install mongodb-org
|
安裝指定版本mongodbyum install mongodb-org-2.6.1 mongodb-org-server-2.6.1 mongodb-org-shell-2.6.1 mongodb-org-mongos-2.6.1 mongodb-org-tools-2.6.1
3.3 為了避免無意識的升級
1 2 |
/etc/yum .conf ->
exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools
|
注意mongodb的預設埠和SELinux服務的狀態。
資料檔案目錄:/var/lib/mongo ,日誌檔案目錄: /var/log/mongo。
改變/var/lib/mongo和/var/log/mongo許可權為mongodb的執行者。
4.1 啟動mongodb
?
1 |
sudo
service mongod start
|
4.2 證實mongodb啟動成功
檢查mongodb日誌檔案/var/log/mongodb/mongod.log。
把mongodb加入開機啟動服務:
1 |
sudo
chkconfig mongod on
|
4.3 關閉mongodb服務
1 |
sudo
service mongod stop
|
4.4 重啟mongodb服務
1 |
sudo
service mongod restart
|
4.5 開始使用mongodb
配置檔案部分
MongoDB引入一個YAML-based格式的配置檔案。2.4版本以前的仍然相容。
我的mongodb配置檔案:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
systemLog:
destination: file
path: "/var/log/mongo/mongod.log"
quiet: true
logAppend: true
timeStampFormat: iso8601-utc
storage:
dbPath: "/var/lib/mongo"
directoryPerDB: true
indexBuildRetry: false
preallocDataFiles: true
nsSize: 16
# quota:
# enforced: false
# maxFilesPerDB: 8
smallFiles: false
syncPeriodSecs: 60
# repairPath: "/var/lib/mongo/_tmp"
journal:
enabled: true
# debugFlags: 1
commitIntervalMs: 100
processManagement:
fork: true
pidFilePath: "/var/run/mongodb/mongod.pid"
net:
# bindIp: 192.168.11.52
port: 27017
http:
enabled: true
RESTInterfaceEnabled: false
# ssl:
# mode: "requireSSL"
# PEMKeyFile: "/etc/ssl/mongodb.pem"
operationProfiling:
slowOpThresholdMs: 100
mode: "slowOp"
security:
keyFile: "/var/lib/mongo/mongodb-keyfile"
clusterAuthMode: "keyFile"
authorization: "disabled"
replication:
oplogSizeMB: 50
replSetName: "repl_test"
secondaryIndexPrefetch: "all"
|
設定選項:
1. systemLog
1 |
systemLog.verbosity
|
integer
日誌檔案輸出的級別,越大級別越低。
1 |
systemLog.quite
|
boolean
在quite模式下會限制輸出資訊:
資料庫命令輸出,副本集活動,連線接受事件,連線關閉事件。
1 |
systemLog.traceAllExceptions
|
string
列印verbose資訊來除錯,用來記錄證額外的異常日誌。
1 |
systemLog.syslogFacility
|
string,預設為user
指定syslog日誌資訊的裝置級別。需要指定--syslog來使用這個選項。
1 |
systemLog.path string
|
傳送所有的診斷資訊日誌,預設重啟後會覆蓋。
1 |
systemLog.logAppend
|
boolean
是否啟用追加日誌。
1 |
systemLog.destination
|
string
指定一個檔案或syslog。如果指定為檔案,必須同時指定systemLog.path
1 |
systemLog.timeStampFormat
|
string,預設為iso8601-local
日誌資訊中的時間戳格式:
1 |
ctime,iso8601-utc,iso8601-local
|
2. processManagement
1 |
processManagement.pidFilePath
|
string
指定程序的ID,與--fork配合使用,不指定則不會建立。
1 |
processManagement.fork
|
boolean,預設為false
是守護程序在後臺執行。
3. net
1 |
net.port
|
interger,預設為27017
mongodb例項監聽的埠號。
1 |
net.bindIp
|
string,2.6版本預設為127.0.0.1
指定mongodb例項繫結的ip,為了繫結多個ip,可以使用逗號分隔。
1 |
net.maxIncomingConnections
|
integer 預設為1000000
mongodb例項接受的最多連線數,如果高於作業系統接受的最大執行緒數,設定無效。
1 |
net.wireObjectCheck
|
boolean,預設為true
檢查文件的有效性。會稍微影響效能。
1 |
net.http.enabled
|
boolean,預設為false
開啟http埠,會導致更多的不安全因素。
1 |
net.unixDomainSocket.enabled
|
boolean,預設為false
停止UNIX domain socket監聽。
mongodb例項會一直監聽UNIX
socket,除非net.unixDomainSocket.enabled設定為true,bindIp沒有設定,bindIp沒有預設指定為127.0.0.1。
1 |
net.unixDomainSocket.pathPrefix
|
string,預設為/tmp
unix Socket所在的路徑。
1 |
net.ipv6
|
boolean,預設為false
開啟IPV6功能,預設為關閉的。
1 |
net.http.JSONPEnabled
|
boolean,預設為false
執行json訪問http埠,開啟會導致更多的不安全因素。
1 |
net.http.RESTInterfaceEnabled
|
boolean,預設為false
即使http介面選項關閉,開啟也會暴露http介面,會導致更多的不安全因素。
4. security
1 |
security.keyFile
|
string
指定分片集或副本整合員之間身份驗證的key檔案儲存位置。
1 |
security.clusterAuthMode
|
string
叢集認證中利用到這個模式,如果使用x.509安全機制,可以在這裡指定。
1 |
keyFile,sendKeyFile,sendX509,x509
|
預設的mongodb發行版是不支援ssl的,可以使用專業版的或重新自行編譯mongodb。
1 |
security.authorization
|
string,預設為disabled
開啟訪問資料庫和進行操作的使用者角色認證。
enabled,disabled
5. operationProfiling
1 |
operationProfiling.slowOpThresholdMs
|
integer,預設100
指定慢查詢時間,單位毫秒,如果開啟功能,則向system.profile集合寫入資料。
1 |
operationProfiling.mode
|
integer,預設0
改變分析日誌輸出級別。
0,1,2,分別對應關閉,僅開啟慢查詢,記錄所有操作。
6. storage
1 |
storage.dbPath
|
string
指定資料檔案的路徑。
1 |
storage.directoryPerDB
|
boolean,預設關閉
指定儲存每個資料庫檔案到單獨的資料目錄。如果在一個已存在的系統使用該選項,需要事先把存在的資料檔案移動到目錄。
1 |
storage.indexBuildRetry
|
boolean,預設為true
指定資料庫在索引建立過程中停止,重啟後是否重新建立索引。
1 |
storage.preallocDataFiles
|
boolean,預設true
是否預先分片好資料檔案。
1 |
storage.nsSize
|
integer,預設16
指定名稱空間的大小,即.ns字尾的檔案。最大為2047MB,16M檔案可以提供大約24000個名稱空間。
1 |
storage.quota.enforced
|
boolean,預設false
限制每個資料庫的資料檔案數目。可以通過maxFilesPerDB調整數目。
1 |
storage.quota.maxFilesPerDB
|
integer,預設為8
限制每個資料庫的資料檔案數目。
1 |
storage.smallFiles
|
boolean,預設為false
限制mongodb資料檔案大小為512MB,減小journal檔案從1G到128M,適用於有很多數量小的資料檔案。
1 |
storage.syncPeriodSecs
|
number,預設60
mongodb檔案重新整理頻率,儘量不要在生產環境下修改。
storage.repairPath
string,預設為指定dbpath下的_tmp目錄。
指定包含資料檔案的根目錄,進行--repair操作。
1 |
storage.journal.enabled
|
boolean,預設64bit為true,32bit為false
記錄操作日誌,防止資料丟失。
1 |
storage.journal.debugFlags
|
integer
提供資料庫在非正常關閉下的功能測試。
1 |
storage.journal.commitIntervalMs
|
number,預設為100或30
journal操作的最大間隔時間。可以是2-300ms之間的值,低的值有助於持久化,但是會增加磁碟的額外負擔。
如果journal和資料檔案在同一磁碟上,預設為100ms。如果在不同的磁碟上為30ms。
如果強制mongod提交日誌檔案,可以指定j:true,指定後,時間變為原來的三分之一。
7. replication
1 |
replication.oplogSizeMB
|
integer,預設為磁碟的5%
指定oplog的最大尺寸。對於已經建立過oplog.rs的資料庫,指定無效。
1 |
replication.replSetName
|
string
指定副本集的名稱。
1 |
replication.secondaryIndexPrefetch
|
string,預設為all
指定副本整合員在接受oplog之前是否載入索引到記憶體。預設會載入所有的索引到記憶體。
none,不載入;all,載入所有;_id_only,僅載入_id。
8. sharding
1 |
sharding.clusterRole
|
string
指定分片集的mongodb角色。
configsvr,配置伺服器,埠27019;shardsvr,分片例項,埠27018。
1 |
sharding.archiveMovedChunks
|
integer
在塊移動過程中,該選項強制mongodb例項儲存所有移動的文件到moveChunk目錄。
9. auditLog
1 |
auditLog.destination
|
string
syslog,以json格式儲存身份驗證到syslog,windows下不可用,serverity級別為info,facility級別為user。
console,以json格式輸出資訊到標準輸出。
file,以json格式輸出資訊到檔案。
1 |
auditLog.format
|
string
指定輸出檔案的格式
JSON,輸出json格式檔案;BSON,輸出bson二進位制格式檔案。
1 |
auditLog.path
|
string
如果--auditDestination的值為file,則該選項指定檔案路徑。
1 |
auditLog.filter
|
document
指定過濾系統身份驗證的格式為:
1 2 |
{ atype : <expression> }
{ atype: <expression>, "param.db": <database> }
|
10. snmp
1 |
snmp.subagent
|
boolean
執行SNMP為一個子代理。
1 |
snmp.master
|
boolean
執行SNMP為一個主程序。
PS:
1.僅mongos選項
1 |
replication.localPingThresholdMs
|
integer,預設15
當客戶端選定副本集進行讀操作時受影響。
1 |
sharding.autoSplit
|
boolean
防止mongos自動在一個分片集合中插入元資料。
因為任何的mongos都可以建立一個分離,如果開啟該選項,將會導致分片不平衡,需要謹慎使用。
1 |
sharding.configDB
|
string
指定配置資料庫。可以使用逗號分隔一到三個伺服器。
如果處於不同的位置,需要指定最近的一個。
不能移除配置伺服器,即使不可用或者離線了。
1 |
sharding.chunkSize
|
integer,預設為64
每個塊的大小。64MB是理想大小,小的會導致不能在不同節點間高效移動。
僅僅在初始化時有效。
2.Windows服務選項
1 |
processManagement.windowsService.serviceName
|
string,預設為MongoDB
指定mongodb服務名稱。可以使用--install,--remove增加或刪除。
1 |
processManagement.windowsService.displayName
|
string,預設為MongoDB
設定mongodb服務應用程式的名稱。
1 |
processManagement.windowsService.description
|
string,預設為MongoDB Server
結合--install,必須指定該選項的值。
1 |
processManagement.windowsService.serviceUser
|
指定執行mongodb服務的使用者
1 |
processManagement.windowsService.servicePassword
|
指定執行mongodb服務的使用者的密碼