上一個篇幅介紹了mongodb的介紹和安裝,接下來介紹mongodb的配置文件。
bsondump:將bjson文檔轉化為json文檔
mongo:客戶端程序,連接MongoDB
mongod:服務端程序,啟動MongoDB
mongodump:備份程序
mongoexport:數據導出程序
mongofiles:GridFS工具,內建的分布式文件系統
mongoimport:數據導入程序
mongooplog:mongodb的oplog
mongoperf:mongoperf是mongoDB自帶工具,用于評估磁盤隨機IO性能。
mongoreplay:一種工具能夠把程序在現網上接收的所有網絡包存儲下來,然后在測試環境上將這個些存儲的網絡包進行重放,進行測試
mongorestore:數據恢復程序
mongos:數據分片程序,支持數據的橫向擴展
mongostat:監視程序
mongotop:跟蹤一個MongoDB的實例,查看哪些大量的時間花費在讀取和寫入數據
mongodb.conf:新建的mongodb的配置文件
mongodb.conf配置文件
storage:
dbPath: "/usr/local/mongodb/mongodb-linux-x86_64-rhel70-3.4.10/data"
systemLog:
destination: file
path: "/usr/local/mongodb/mongodb-linux-x86_64-rhel70-3.4.10/logs/mongodb.log"
net:
port: 27022
http:
RESTInterfaceEnabled: true
processManagement:
fork: false
官方配置文件文檔:
https://docs.mongodb.com/manual/reference/configuration-options/
systemLog:
verbosity: <int>
quiet: <boolean>
traceAllExceptions: <boolean>
syslogFacility: <string>
path: <string>
logAppend: <boolean>
logRotate: <string>
destination: <string>
timeStampFormat: <string>
component:
accessControl:
verbosity: <int>
command:
verbosity: <int>
systemLog.verbosity:Type: integer,Default: 0
日志消息詳細級別,范圍是0到5,0是MongoDB的默認日志詳細級別,其中包含參考消息。
1到5增加了詳細程度,包含Debug消息。從版本4.2開始,MongoDB在日志消息中包括調試詳細級別(1-5)。 例如,如果詳細級別為2,則MongoDB記錄D2。 在以前的版本中,MongoDB日志消息僅將Debug級別指定為D。
systemLog.quiet:Type: boolean
以quiet模式運行mongos或mongod,以嘗試限制輸出量。不建議在生產系統中使用systemLog.quiet,因為它可能會使在特定連接期間的跟蹤問題更加困難。
systemLog.traceAllExceptions:Type: boolean
打印詳細信息以進行調試, 用于支持排除相關故障的其他日志記錄。
systemLog.syslogFacility:Type: string,Default: user
將消息記錄到syslog時使用的工具。 操作系統的syslog實現必須支持您指定的值。 要使用此選項,必須將systemLog.destination設置為syslog。
systemLog.path:Type: string
mongod或mongos應該將所有診斷日志記錄信息發送到的日志文件的路徑,而不是標準輸出或主機的syslog。 MongoDB在指定路徑創建日志文件。
systemLog.logAppend:Type: boolean,Default: false
如果為true,則mongos或mongod實例重新啟動時,mongos或mongod會將新條目追加到現有日志文件的末尾。 如果沒有此選項,mongod將備份現有日志并創建一個新文件。
systemLog.logRotate:Type: string,Default: rename
日志 “回轉”,防止一個日志文件特別大,則使用 logRotate 指令將文件 “回轉”,可選值:
1.rename:重命名日志文件,默認值。
2.reopen:使用 linux 日志 rotate 特性,關閉并重新打開此日志文件,可以避免日志丟失,但是 logAppend 必須為 true。
systemLog.destination:Type: string
日志輸出目的地,可以指定為 “file” 或者“syslog”,表述輸出到日志文件,如果不指定,則會輸出到標準輸出中(standard output)
注意:syslog守護程序在記錄消息時(而不是在MongoDB發出消息時)生成時間戳。 這會導致誤導日志條目的時間戳,尤其是在系統負載沉重的情況下。 我們建議對生產系統使用file選項,以確保準確的時間戳。
systemLog.timeStampFormat:Type: string,Default: iso8601-local
日志消息中時間戳的時間格式。可選值:
ctime:顯示時間格式為Wed Dec 31 18:17:54.811
iso8601-utc:以國際標準時間(UTC)以ISO-8601格式顯示時間戳,1970-01-01T00:00:00.000Z
iso8601-local:以ISO-8601格式顯示本地時間的時間戳,1969-12-31T19:00:00.000-0500
systemLog.component配置選項
systemLog:
component:
accessControl:
verbosity: <int>
command:
verbosity: <int>
# COMMENT some component verbosity settings omitted for brevity
replication:
verbosity: <int>
election:
verbosity: <int>
heartbeats:
verbosity: <int>
initialSync:
verbosity: <int>
rollback:
verbosity: <int>
storage:
verbosity: <int>
journal:
verbosity: <int>
recovery:
verbosity: <int>
write:
verbosity: <int>
systemLog.component.accessControl.verbosity:Type: integer,Default: 0
與訪問控制有關的組件的日志消息詳細級別
詳細級別的范圍是0到5:
0是MongoDB的默認日志詳細級別,其中包含參考消息。
1到5增加了詳細程度,以包含Debug消息。
除了accessControl,還有很多的組件都可以配置日志級別。在這里列出如下。
command,control,ftdc(3.2版中的新功能),geo,index,network,query,replication,
replication.election(4.2版中的新功能),replication.heartbeats(3.6版中的新功能),replication.initialSync
(4.2版中的新功能),replication.rollback(3.6版中的新功能),storage,storage.journal,
storage.recovery(4.0版中的新功能),transaction(4.0.2版中的新功能),write。
processManagement:
fork: <boolean>
pidFilePath: <string>
timeZoneInfo: <string>
processManagement.fork:Type: boolean,Default: false
啟用后臺運行mongos或mongod進程的守護程序模式。 默認情況下,mongos或mongod不會作為守護程序運行:通常,您將通過使用processManagement.fork或使用處理守護進程的控制進程(例如,與upstart和systemd一起)將mongos或mongod作為守護程序運行。
Windows不支持processManagement.fork選項。
Linux程序包的初始化腳本不希望processManagement.fork更改為默認值。 如果使用Linux軟件包并更改processManagement.fork,則必須使用自己的初始化腳本并禁用內置腳本。
processManagement.pidFilePath:Type: string
指定文件位置來存儲mongos或mongod進程的進程ID(PID)。 運行mongod或mongos進程的用戶必須能夠寫入此路徑。 如果未指定processManagement.pidFilePath選項,則該過程不會創建PID文件。 此選項通常僅與processManagement.fork設置結合使用才有用。
processManagement.timeZoneInfo:Type: string
加載時區數據庫的完整路徑。 如果未提供此選項,則MongoDB將使用其內置時區數據庫。
Linux和macOS軟件包隨附的配置文件默認將時區數據庫路徑設置為/usr/share/zoneinfo。
內置時區數據庫是Olson/IANA時區數據庫的副本。 它隨MongoDB版本一起更新,但時區數據庫的發布周期與MongoDB的發布周期不同。 可以從https://downloads.mongodb.org/olson_tz_db/timezonedb-latest.zip下載最新版本的時區數據庫。
4.0版本的新功能
cloud:
monitoring:
free:
state: <string>
tags: <string>
cloud.monitoring.free.state:Type: string
版本4.0中的新功能:適用于MongoDB社區版。
啟用或禁用免費的MongoDB Cloud監視。 cloud.monitoring.free.state接受以下值:
要在運行時啟用或禁用免費監視,請參見db.enableFreeMonitoring()和db.disableFreeMonitoring()。
要在使用訪問控制運行時在運行時啟用或禁用免費監視,用戶必須具有必需的特權。 有關詳細信息,請參見
db.enableFreeMonitoring()和db.disableFreeMonitoring()。
啟用后,自由監視狀態將保持啟用狀態,直到明確禁用為止。 也就是說,您不必在每次啟動服務器時都重新啟用。
有關相應的命令行選項,請參見--enableFreeMonitoring。
cloud.monitoring.free.tags:Type: string
版本4.0中的新功能:適用于MongoDB社區版。
描述環境上下文的可選標簽。 該標簽可以在啟動時作為免費的MongoDB Cloud監視注冊的一部分發送。
有關相應的命令行選項,請參見--freeMonitoringTag。
net:
port: <int>
bindIp: <string>
bindIpAll: <boolean>
maxIncomingConnections: <int>
wireObjectCheck: <boolean>
ipv6: <boolean>
unixDomainSocket:
enabled: <boolean>
pathPrefix: <string>
filePermissions: <int>
tls:
certificateSelector: <string>
clusterCertificateSelector: <string>
mode: <string>
certificateKeyFile: <string>
certificateKeyFilePassword: <string>
clusterFile: <string>
clusterPassword: <string>
CAFile: <string>
clusterCAFile: <string>
CRLFile: <string>
allowConnectionsWithoutCertificates: <boolean>
allowInvalidCertificates: <boolean>
allowInvalidHostnames: <boolean>
disabledProtocols: <string>
FIPSMode: <boolean>
compression:
compressors: <string>
serviceExecutor: <string>
在版本4.2中進行了更改:MongoDB 4.2棄用ssl選項,轉而使用具有相同功能的tls選項。
net.port:Type: integer
Default:
27017:如果不是分片或者config服務成員,或者是mongos實例
27018:如果mongod是分片成員
27019: 如果mongod是config 服務器成員
MongoDB實例在其上偵聽客戶端連接的TCP端口。
net.bindIp:Type: string,Default: localhost
從MongoDB 3.6開始,默認情況下mongos或mongod綁定到localhost。
mongos或mongod應該在其上偵聽客戶端連接的主機名,IP地址,完整的Unix域套接字路徑。 您可以將mongos或mongod附加到任何接口。 要綁定到多個地址,請輸入一個用逗號分隔的值的列表。
localhost,/tmp/mongod.sock
您可以指定IPv4和IPv6地址,也可以指定解析為IPv4或IPv6地址的主機名。
localhost, 2001:0DB8:e132:ba26:0d5c:2774:e7f9:d513
如果為net.bindIp指定IPv6地址或解析為IPv6地址的主機名,則必須以net.ipv6:true開頭。
net.bindIpAll:Type: boolean,Default: false
如果為true,則mongos或mongod實例綁定到所有IPv4地址(即0.0.0.0)。 如果mongos或mongod以net.ipv6:true開頭,則net.bindIpAll也將綁定到所有IPv6地址(即::)。
net.bindIp和net.bindIpAll是互斥的。 同時指定兩個選項會導致mongos或mongod拋出錯誤并終止。
net.maxIncomingConnections:Type: integer,Default: 65536
mongos或mongod將接受的最大同時連接數。 如果此設置高于操作系統配置的最大連接跟蹤閾值,則該設置無效。
請勿為此選項分配太低的值,否則在正常的應用程序操作過程中會遇到錯誤。
如果您的客戶端創建多個連接并允許它們超時而不是關閉它們,則這對于mongos尤其有用。
在這種情況下,請將maxIncomingConnections設置為略高于客戶端創建的最大連接數或連接池的最大的值。
此設置可防止mongos引起各個分片上的連接尖峰。 此類尖峰可能會破壞分片群集的操作和內存分配。
net.wireObjectCheck:Type: boolean,Default: true
設置為true時,mongod或mongos實例會驗證來自客戶端的所有請求,以防止客戶端將格式錯誤或無效的BSON插入MongoDB數據庫。
net.ipv6:Type: boolean,Default: false
將net.ipv6設置為true以啟用IPv6支持。 mongos/mongod默認禁用IPv6支持。
net.unixDomainSocke配置
net:
unixDomainSocket:
enabled: <boolean>
pathPrefix: <string>
filePermissions: <int>
net.unixDomainSocket.enabled:Type: boolean,Default: true
在UNIX域套接字上啟用或禁用偵聽。 net.unixDomainSocket.enabled僅適用于基于Unix的系統。
當net.unixDomainSocket.enabled為true時,mongos或mongod在UNIX套接字上偵聽。
除非滿足以下條件之一,否則mongos或mongod進程始終在UNIX套接字上偵聽:
net.unixDomainSocket.pathPrefix:Type: string,Default: /tmp
UNIX套接字的路徑。 net.unixDomainSocket.pathPrefix僅適用于基于Unix的系統。
如果此選項沒有值,則mongos或mongod進程將創建一個以/ tmp為前綴的套接字。 除非滿足以下條件之一,否則MongoDB會在UNIX套接字上創建并偵聽:(同上)
net.unixDomainSocket.filePermissions:Type: int,Default: 0700
設置UNIX域套接字文件的權限。net.unixDomainSocket.filePermissions僅適用于基于Unix的系統。
net.http配置
在3.6版中進行了更改:MongoDB 3.6刪除了不推薦使用的net.http選項。 自3.2版以來,該選項已被棄用。
4.2版中的新增功能:tls選項提供的功能與以前的ssl選項相同。
net:
tls:
mode: <string>
certificateKeyFile: <string>
certificateKeyFilePassword: <string>
certificateSelector: <string>
clusterCertificateSelector: <string>
clusterFile: <string>
clusterPassword: <string>
CAFile: <string>
clusterCAFile: <string>
CRLFile: <string>
allowConnectionsWithoutCertificates: <boolean>
allowInvalidCertificates: <boolean>
allowInvalidHostnames: <boolean>
disabledProtocols: <string>
FIPSMode: <boolean>
net.tls.mode:Type: string,
4.2版中的新功能。
啟用用于所有網絡連接的TLS。 net.tls.mode設置的參數可以是以下之一:
disabled:服務器不使用TLS
allowTLS:服務器之間的連接不使用TLS。 對于傳入連接,服務器同時接受TLS和非TLS。
preferTLS:服務器之間的連接使用TLS。 對于傳入連接,服務器同時接受TLS和非TLS。
requireTLS:服務器僅使用并接受TLS加密連接。
如果未指定--tlsCAFile或tls.CAFile并且未使用x.509身份驗證,則在連接到啟用TLS的服務器時將使用系統范圍的CA證書存儲。
如果使用x.509身份驗證,則必須指定--tlsCAFile或tls.CAFile,除非使用--tlsCertificateSelector。
有關TLS和MongoDB的更多信息,請參閱為TLS/SSL和客戶端的TLS/SSL配置配置mongod和mongos。
net.tls.certificateKeyFile:Type: string
4.2版中的新增功能。.pem文件同時包含TLS證書和密鑰。
從macOS或Windows上的MongoDB 4.0開始,您可以使用net.tls.certificateSelector設置從操作系統的安全證書存儲而不是PEM密鑰文件中指定證書。 certificateKeyFile和net.tls.certificateSelector是互斥的。 您只能指定一個。
僅對于Windows,MongoDB 4.0和更高版本不支持加密的PEM文件。 如果mongod遇到加密的PEM文件,它將無法啟動。 要在Windows上安全地存儲和訪問用于TLS的證書,請使用net.tls.certificateSelector。
net.tls.certificateKeyFilePassword:Type: string
版本4.2中的新功能:用于解密證書密鑰文件(即certificateKeyFile)的密碼。 僅當證書密鑰文件已加密時,才使用net.tls.certificateKeyPassword選項。 在所有情況下,mongos或mongod都會從所有日志記錄和報告輸出中刪除密碼。
net.tls.certificateSelector:Type: string
4.2版中的新增功能。Windows和macOS上可用,可以替代net.tls.certificateKeyFile。
指定證書屬性,以便從操作系統的證書存儲中選擇匹配的證書以用于TLS/SSL。
net.tls.clusterCertificateSelector:Type: string
4.2版中的新增功能:.pem文件包含用于群集或副本集成員身份驗證的x.509證書密鑰文件。
net.tls.clusterPassword:Type: string
4.2版中的新增功能:用于解密使用--sslClusterFile指定的x.509證書密鑰文件的密碼。 僅當證書密鑰文件已加密時,才使用net.tls.clusterPassword選項。 在所有情況下,mongos或mongod都會從所有日志記錄和報告輸出中刪除密碼。
net.tls.CAFile:Type: string
4.2版中的新增功能:.pem文件包含來自證書頒發機構的根證書鏈。 使用相對或絕對路徑指定.pem文件的文件名。
net.tls.clusterCAFile:Type: string
版本4.2中的新增功能:.pem文件包含來自證書頒發機構的根證書鏈,該證書頒發機構用于驗證建立連接的客戶端提供的證書。 使用相對或絕對路徑指定.pem文件的文件名。 net.tls.clusterCAFile要求設置net.tls.CAFile。
net.tls.CRLFile:Type: string
4.2版中的新功能。
包含證書吊銷列表的.pem文件。 使用相對或絕對路徑指定.pem文件的文件名。
從MongoDB 4.0開始,您不能在macOS上指定net.tls.CRLFile。 請改用net.tls.certificateSelector。
net.tls.allowConnectionsWithoutCertificates:Type: boolean
4.2版中的新功能。
對于不提供證書的客戶端,mongos或mongod在建立連接時會繞過TLS/SSL證書驗證。
net.tls.allowInvalidCertificates:Type: string
4.2版中的新功能。
對群集中其他服務器上的TLS證書啟用或禁用驗證檢查,并允許使用無效證書進行連接。
net.tls.allowInvalidHostnames:Type: boolean,Default: false
當net.tls.allowInvalidHostnames為true時,MongoDB禁用TLS證書中主機名的驗證,如果其證書的主機名與指定的主機名不匹配,則允許mongod連接到MongoDB實例。
net.tls.disabledProtocols:Type: string
4.2版中的新功能。
防止運行TLS的MongoDB服務器接受使用一個或多個特定協議的傳入連接。 要指定多個協議,請使用逗號分隔的協議列表。
net.tls.disabledProtocols可以識別以下協議:TLS1_0,TLS1_1,TLS1_2,以及版本4.0.4(和3.6.9)以及TLS1_3。
net.tls.FIPSMode:Type: boolean
4.2版中的新功能。
為mongos或mongod啟用或禁用TLS庫的FIPS模式。 您的系統必須具有FIPS兼容庫才能使用net.tls.FIPSMode選項。
兼容FIPS的TLS/SSL僅在MongoDB Enterprise中可用。 有關更多信息,請參閱為FIPS配置MongoDB。
net.ssl配置
從4.2開始不推薦使用所有SSL選項。 請使用TLS對應項,因為它們具有與SSL選項相同的功能。 不建議使用SSL協議,MongoDB支持TLS 1.0和更高版本。
security:
keyFile: <string>
clusterAuthMode: <string>
authorization: <string>
transitionToAuth: <boolean>
javascriptEnabled: <boolean>
redactClientLogData: <boolean>
clusterIpSourceWhitelist:
- <string>
sasl:
hostName: <string>
serviceName: <string>
saslauthdSocketPath: <string>
enableEncryption: <boolean>
encryptionCipherMode: <string>
encryptionKeyFile: <string>
kmip:
keyIdentifier: <string>
rotateMasterKey: <boolean>
serverName: <string>
port: <string>
clientCertificateFile: <string>
clientCertificatePassword: <string>
clientCertificateSelector: <string>
serverCAFile: <string>
ldap:
servers: <string>
bind:
method: <string>
saslMechanisms: <string>
queryUser: <string>
queryPassword: <string>
useOSDefaults: <boolean>
transportSecurity: <string>
timeoutMS: <int>
userToDNMapping: <string>
authz:
queryTemplate: <string>
validateLDAPServerConfig: <boolean>
security.keyFile:Type: string
密鑰文件的路徑,該密鑰文件用于存儲MongoDB實例用于在分片群集或副本集中相互進行身份驗證的共享密鑰。 keyFile表示security.authorization。
security.clusterAuthMode:Type: string,Default: keyFile
用于集群認證的認證方式。 如果您使用內部x.509身份驗證,請在此處指定。
security.authorization:Type: string,Default: disabled
啟用或禁用基于角色的訪問控制(RBAC),以控制每個用戶對數據庫資源和操作的訪問。
security.transitionToAuth:Type: boolean,Default: false
3.4版中的新增功能:允許mongod或mongos接受并創建與部署中其他mongod和mongos實例之間的經過身份驗證和未經身份驗證的連接。 用于執行副本集或分片群集從無身份驗證配置到內部身份驗證的滾動過渡。 需要指定內部身份驗證機制,例如security.keyFile。
security.javascriptEnabled:Type: boolean,Default: true
啟用或禁用服務器端JavaScript執行。 禁用后,您將無法使用執行JavaScript代碼在服務器端執行的操作,例如$where查詢運算符,mapReduce命令和db.collection.mapReduce()方法。
security.redactClientLogData:Type: boolean
3.4版的新功能:僅在MongoDB Enterprise中可用。
運行了security.redactClientLogData的mongod會在記錄之前編輯伴隨給定日志事件的任何消息。 這樣可以防止mongod或mongos將存儲在數據庫中的潛在敏感數據寫入診斷日志。 錯誤或操作代碼,行號和源文件名等元數據仍在日志中可見。
security.clusterIpSourceWhitelistType: list
mongod驗證IP地址/CIDR(無類域間路由)范圍的列表,mongod以此范圍驗證來自副本集其他成員(如果是分片群集的一部分)的mongos實例的身份驗證請求。 mongod驗證原始IP是否在列表中顯示或屬于列表中的CIDR范圍。 如果IP地址不存在,則服務器不會對mongod或mongos進行身份驗證。
Key Management Configuration
security:
enableEncryption: <boolean>
encryptionCipherMode: <string>
encryptionKeyFile: <string>
kmip:
keyIdentifier: <string>
rotateMasterKey: <boolean>
serverName: <string>
port: <string>
clientCertificateFile: <string>
clientCertificatePassword: <string>
clientCertificateSelector: <string>
serverCAFile: <string>
security.enableEncryption:Type: boolean,Default: false
3.2版中的新增功能:為WiredTiger存儲引擎啟用加密。 您必須設置為true才能傳遞加密密鑰和配置。
security.encryptionCipherMode: Type: string,Default: AES256-CBC
3.2版中的新功能。
用于靜態加密的密碼模式
security.encryptionKeyFile:Type: string
3.2版中的新功能。
通過除KMIP之外的其他進程管理密鑰時,本地密鑰文件的路徑。 僅在通過KMIP以外的進程管理密鑰時設置。 如果數據已使用KMIP加密,則MongoDB將引發錯誤。
security.kmip.keyIdentifier:Type: string
KMIP服務器中現有密鑰的唯一KMIP標識符。 包括將與標識符關聯的密鑰用作系統密鑰。 您只能在首次為mongod實例啟用加密時使用該設置。 要求security.enableEncryption為true。
security.kmip.rotateMasterKey:Type: boolean,Default: false
3.2版中的新功能。
如果為true,請旋轉主密鑰并重新加密內部密鑰庫。
security.kmip.serverName:Type: string
3.2版中的新功能。
運行KMIP服務器的密鑰管理解決方案的主機名或IP地址。 要求security.enableEncryption為true。
security.kmip.port:Type: string,Default: 5696
3.2版中的新功能。
KMIP服務器正在偵聽的端口號。 要求提供security.kmip.serverName。 要求security.enableEncryption為true。
security.kmip.clientCertificateFile:Type: string
3.2版中的新功能。
字符串,包含用于向MongoDB驗證KMIP服務器的客戶端證書的路徑。 要求提供security.kmip.serverName。
security.kmip.clientCertificatePassword:Type: string
3.2版中的新功能。
用來解密客戶端證書的密碼(即security.kmip.clientCertificateFile),用于向KMIP服務器認證MongoDB。 僅當證書已加密時才使用該選項。
security.kmip.clientCertificateSelector:Type: string
4.0版中的新增功能:Windows和macOS上可用,可替代security.kmip.clientCertificateFile。
security.kmip.clientCertificateFile和security.kmip.clientCertificateSelector選項是互斥的。 您只能指定一個。
security.kmip.serverCAFile:Type: string
3.2版中的新功能。
CA文件的路徑。 用于驗證與KMIP服務器的安全客戶端連接。
setParameter
設置一個或多個MongoDB服務器參數中描述的參數
要在YAML配置文件中設置參數,請使用以下格式:
setParameter:
<parameter1>: <value1>
<parameter2>: <value2>
#在配置文件中指定enableLocalhostAuthBypass:
setParameter:
enableLocalhostAuthBypass: false
storage:
dbPath: <string>
indexBuildRetry: <boolean>
journal:
enabled: <boolean>
commitIntervalMs: <num>
directoryPerDB: <boolean>
syncPeriodSecs: <int>
engine: <string>
wiredTiger:
engineConfig:
cacheSizeGB: <number>
journalCompressor: <string>
directoryForIndexes: <boolean>
maxCacheOverflowFileSizeGB: <number>
collectionConfig:
blockCompressor: <string>
indexConfig:
prefixCompression: <boolean>
inMemory:
engineConfig:
inMemorySizeGB: <number>
storage.dbPat:Type: string
Default:
storage.indexBuildRetry:Type: boolean,Default: true
指定mongod在下次啟動時是否重建不完整的索引。 這適用于mongod在關閉或在索引構建過程中停止后重新啟動的情況。 在這種情況下,mongod總是刪除所有不完整的索引,然后默認情況下嘗試重建它們。 要阻止mongod重建索引,請將此選項設置為false。
storage.journal.enabled:Type: boolean
默認值:在64位系統上為true,在32位系統上為false
啟用或禁用耐久性日志,以確保數據文件保持有效和可恢復。 僅當您指定storage.dbPath設置時,此選項才適用。 mongod默認情況下啟用日記功能。
storage.journal.commitIntervalMs:Type: number,Default: 100
mongod進程在兩次日記操作之間允許的最長時間(以毫秒為單位)。 取值范圍是1到500毫秒。 較低的值會增加日志的持久性,但會降低磁盤性能。
storage.directoryPerDB:Type: boolean,Default: false
如果為true,則MongoDB使用單獨的目錄存儲每個數據庫的數據。 這些目錄位于storage.dbPath目錄下,每個子目錄名稱都與數據庫名稱相對應。
storage.syncPeriodSecs:Type: number,Default: 60
MongoDB通過fsync操作將數據刷新到數據文件之前可以經過的時間。
storage.engine:Default: wiredTiger
從4.2版開始,MongoDB刪除不推薦使用的MMAPv1存儲引擎。
mongod數據庫的存儲引擎。 可用值包括:inMemory/wiredTiger
如果您嘗試使用storage.dbPath啟動一個mongod,該path包含由storage.engine指定的存儲引擎以外的其他存儲引擎生成的數據文件,mongod將拒絕啟動。
operationProfiling:
mode: <string>
slowOpThresholdMs: <int>
slowOpSampleRate: <double>
operationProfiling.mode:Type: string,Default: off
指定應分析哪些操作。 提供以下探查器級別:
off:探查器已關閉,并且不收集任何數據。 這是默認的探查器級別。
slowOp:探查器收集的數據花費的時間長于慢速值。
all:探查器收集所有操作的數據。
operationProfiling.slowOpThresholdMs:Type: integer,Default: 100
慢速操作時間閾值(以毫秒為單位)。 運行時間超過此閾值的操作被認為是緩慢的。
operationProfiling.slowOpSampleRate:Type: double,Default: 1.0
replication:
oplogSizeMB: <int>
replSetName: <string>
enableMajorityReadConcern: <boolean>
replication.oplogSizeMB
復制操作日志(即oplog)的最大大小(以兆字節為單位)。
從MongoDB 4.0開始,操作日志可以超過其配置的大小限制,以避免刪除多數提交點。
默認情況下,mongod進程基于最大可用空間量創建操作日志。 對于64位系統,操作日志通常是可用磁盤空間的5%。
mongod首次創建oplog后,更改Replication.oplogSizeMB選項將不會影響oplog的大小。
要更改正在運行的副本集成員的操作日志大小,請使用replSetResizeOplog管理命令。 replSetResizeOplog使您能夠動態調整操作日志的大小,而無需重新啟動mongod進程。
replication.replSetName:Type: string
mongod所屬的副本集的名稱。 副本集中的所有主機必須具有相同的集名稱。
如果您的應用程序連接到多個副本集,則每個副本集應具有不同的名稱。 某些驅動程序通過副本集名稱對副本集連接進行分組。
Replication.replSetName設置僅適用于mongod。
從MongoDB 4.0開始:
1.設置Replication.replSetName不能與storage.indexBuildRetry一起使用。
replication.enableMajorityReadConcern對于WiredTiger存儲引擎,storage.journal.enabled:false不能與Replication.replSetName一起使用。
replication.enableMajorityReadConcern:Default: true
從MongoDB 3.6開始,默認情況下,MongoDB啟用“majority”的read concern的支持。
sharding:
clusterRole: <string>
archiveMovedChunks: <boolean>
sharding.clusterRole:Type: string
mongod實例在分片群集中的角色。 將此設置設置為以下之一:
設置sharding.clusterRole要求mongod實例與復制一起運行。 要將實例部署為副本集成員,請使用replSetName設置并指定副本集的名稱。
sharding.archiveMovedChunks:Type: boolean
在3.2版中進行了更改:從3.2版開始,MongoDB使用false作為默認值。
在塊遷移期間,分片不會保存從該分片遷移的文檔。
具體可以查看官方文檔:https://docs.mongodb.com/manual/reference/configuration-options/
MongoDB是由C++語言編寫的一個基于分布式文件存儲的開源數據庫系統,它的目的在于為WEB應用提供可擴展的高性能數據存儲解決方案。
MongoDB是一個介于關系型數據庫和非關系型數據庫之間的產品,是非關系型數據庫當中功能最豐富,最像關系型數據庫的。它支持的數據結構非常松散,會將數據存儲為一個文檔,數據結構由鍵值對(key=>value)組成,是類似于json的bson格式,字段值可以包含其它文檔、數組和文檔數組,因此可以存儲比較復雜的數據類型。
MongoDB最大的特點就是它支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系型數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。
MongoDB的主要特點:
1) MongoDB提供了一個面向文檔存儲,操作起來比較簡單和容易的非關系型數據庫。
2) 你可以在MongoDB記錄中設置任何屬性的索引來實現更快的排序。
3) 你可以通過本地u或者網絡創建數據鏡像,這使得MongoDB含有更強的擴展性。
4) 如果負載的增加(需要更多的存儲空間和更強的處理能力),它可以分布在計算機網絡中的其它節點上,這就是所謂的分片。
5) MongoDB支持豐富的查詢表達式,查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象和數組。
6) MongoDB使用update()命令可以實現替換完成的文檔(數據)或者一些指定的數據字段。
7) MongoDB中的Map/Reduce主要是用來對數據進行批量處理和聚合操作,Map函數調用emit(key,value)遍歷集合中所有的記錄,將key于value傳遞給Reduce函數進行處理。另外Map函數和Reduce函數是使用JavaScript編寫的,所以可以通過db.runCommand和mapreduce命令來執行MapReduce操作。
8) GridFS是MongoDB中的一個內置功能,可以用于存放大量小文件。
9) MongoDB允許在服務端執行腳本,可以用JavaScript編寫某個函數,直接在服務端執行,也可以吧函數的定義存儲在服務端,下次直接調用即可。
10) MongoDB支持各種編程語言:RUBY、PYTHON、JAVA、C++、PHP、C#等多種語言并且MongoDB的安裝也非常簡單。
MongoDB官網:http://www.mongodb.org/
MongoDB學習網站:http://www.runoob.com/mongodb
1.下載安裝包
MongoDB包下載地址:http://www.mongodb.org/downloads
下載方式:
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.9.tgz
解壓縮壓縮包:
tar -xvf mongodb-linux-x86_64-rhel62-3.4.9.tgz
2. 安裝準備
創建數據庫文件夾與日志文件、配置文件:
mkdir -p /usr/local/mongodb/data
touch /usr/local/mongodb/mongod.log
touch /usr/local/mongodb/mongodb.conf
將mongodb移動到/usr/local/mongdb文件夾:
mv /usr/local/mongodb-linux-x86_64-rhel62-3.4.9/* /usr/local/mongodb/
3. 啟動mongodb(有兩種方式)
參數啟動:
參數啟動可以直接在命令后面加配置參數,也可以加配置文件啟動,如下加配置參數啟動:
cd /usr/local/mongodb/bin
./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/mongod.log --logappend --port=27017 --fork
注:如果加權限就用 --auth 參數,不需要權限就去掉
如果在配置文件中配置好各項參數,則可以使用配置文件啟動:
./mongod --config /usr/local/mongodb/mongodb.conf
附錄:mongodb配置文件詳解
系統服務啟動:
使用系統服務命令啟動需要先將服務加入到系統服務中,附錄:將mongod添加到系統服務
service mongod start|stop|restart
注:可以將mongodb臨時加入系統路徑變量中,這樣可以不用輸入路徑直接啟動,代碼如下:
export PATH=/usr/local/mongodb/bin:$PATH
然后可以查看是否成功:echo $PATH
4. 參數解釋: --dbpath 數據庫路徑(數據文件)
--logpath 日志文件路徑
--master 指定為主機器
--slave 指定為從機器
--source 指定主機器的IP地址
--pologSize 指定日志文件大小不超過64M.因為resync是非常操作量大且耗時,最好通過設置一個足夠大的pologSize來避免resync(默認的 oplog大小是空閑磁盤大小的5%)。
--logappend 日志文件末尾添加
--port 啟用端口號
--fork 在后臺運行
--only 指定只復制哪一個數據庫
--slavedelay 指從復制檢測的時間間隔
--auth 是否需要驗證權限登錄(用戶名和密碼)
--config 配置文件位置
----------------------------------------------------------------------------------------------
1、mongodb安裝好后第一次進入是不需要密碼的,也沒有任何用戶,通過shell命令可直接進入,cd到mongodb目錄下的bin文件夾,執行命令./mongo即可
[root@node1 ~]# cd /usr/local/mongodb/bin/ [root@node1 bin]# ./mongo MongoDB shell version v3.4.9 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.9 Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user Server has startup warnings: 2017-09-24T19:37:13.942+0800 I STORAGE [initandlisten] 2017-09-24T19:37:13.942+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTi ger storage engine2017-09-24T19:37:13.942+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem 2017-09-24T19:37:14.187+0800 I CONTROL [initandlisten] 2017-09-24T19:37:14.187+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2017-09-24T19:37:14.187+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2017-09-24T19:37:14.187+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recom mended.2017-09-24T19:37:14.187+0800 I CONTROL [initandlisten] 2017-09-24T19:37:14.190+0800 I CONTROL [initandlisten] 2017-09-24T19:37:14.190+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2017-09-24T19:37:14.190+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-09-24T19:37:14.190+0800 I CONTROL [initandlisten] 2017-09-24T19:37:14.190+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2017-09-24T19:37:14.190+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-09-24T19:37:14.190+0800 I CONTROL [initandlisten] > use test; switched to db test
2、添加管理用戶(mongoDB 沒有無敵用戶root,只有能管理用戶的用戶 userAdminAnyDatabase),
> use admin switched to db admin > db.createUser( {user: "admin",pwd: "123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]}) Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } >
注:添加完用戶后可以使用show users或db.system.users.find()查看已有用戶
3、添加完管理用戶后,關閉MongoDB,并使用權限方式再次開啟MongoDB,這里注意不要使用kill直接去殺掉mongodb進程,(如果這樣做了,請去data/db目錄下刪除mongo.lock文件),可以使用db.shutdownServer()關閉
4、使用權限方式啟動MongoDB
./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/mongod.log --fork --auth
或者在配置文件中修改:
auth=true
#noauth=true
5、進入mongo shell,使用admin數據庫并進行驗證,如果不驗證,是做不了任何操作的。
> use admin
> db.auth("admin","123456") #認證,返回1表示成功
6、驗證之后還是做不了操作,因為admin只有用戶管理權限,下面創建用戶,用戶都跟著庫走,
> use mydb
> db.createUser({user: "root",pwd: "123456",roles: [{ role: "readWrite", db: "mydb" }]})
7、使用創建的用戶root登錄進行數據庫操作:
[root@node1 bin]# pwd /usr/local/mongodb/bin [root@node1 bin]# ./mongo 127.0.0.1/mydb -uroot -p MongoDB shell version v3.4.9 Enter password: connecting to: mongodb://127.0.0.1/mydb MongoDB server version: 3.4.9 > db mydb > use mydb switched to db mydb > show collections >
然后就可以進行增刪改查各種數據操作...
----------------------------------------------------------------------------------------------
因為是手動安裝的MongoDB,所以也需要編譯安裝MongoDB擴展,步驟如下:
1)下載最新的php mongodb擴展源碼,源碼可以在
http://pecl.php.net/package/mongo下載.
2)解壓,進入安裝目錄
wget http://pecl.php.net/get/mongo-1.4.0.tgz
tar -zxvf mongo-1.4.0.tgz
cd mongo-1.4.0
3)進入文件夾后,首先運行phpize來編譯擴展的環境
[root@localhost mongo-1.4.0]# /usr/bin/phpize
Configuring for:
PHP Api Version: 20121113
Zend Module Api No: 20121212
Zend Extension Api No: 220121212
4)運行后,我們運行./configure腳本來進行配置
./configure --with-php-config=/usr/local/php/bin/php-config && make && make install
## --with-php-config 這個參數是告訴配置腳本 php-config 這個程序的路徑
5)完成后,請編輯你php.ini文件增加一行
extension=mongo.so
一般默認的編譯php的ini文件/usr/local/php/etc/php.ini
重啟Apache/Nginx[或者/etc/init.d/php-fpm restart] 打開 phpinfo
看到mongo模塊,證明MongoDB的php擴展安裝成功。
OK ,至此你可以使用php來操作 MongoDB 了
大家需要什么方面的技術文章可以在評論@我,我這邊下次可以發相關的,喜歡就關注哦~