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

安裝指定版本mongodb
yum 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
4. 運行mongodb
注意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服務的用戶的密碼



發佈了103 篇原創文章 · 獲贊 60 · 訪問量 70萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章