環境
MongoDB 4.x
步驟
- 下載、安裝
地址:https://www.mongodb.com/download-center/community 截至目前,最新版本爲4.0.5
解壓下載的安裝包(zip),建立如下目錄環境(非必須,可根據實際情況自行調整)
在replicaset目錄下建立如下三個配置文件,分別用來表示主機、次主機的配置。
文件內容如下:(需要修改的地方有N處,尤其注意端口號和路徑,搜#@標記)
#系統日誌配置
systemLog:
destination: file
#@
path: log/mongodb/mongod_primary.log
logAppend: true
#quiet模式運行,建議設置爲false,方便排查錯誤
quiet: false
#進程管理
processManagement:
#進程後臺運行
#fork: false
#進程pid文件#@
pidFilePath: log/mongodb/mongod_primary.pid
#網絡配置
net:
#監聽端口#@
port: 27018
#監聽網卡 多個使用英文逗號隔開
bindIp: 127.0.0.1
#最大併發連接數 默認65535
maxIncomingConnections: 65535
#驗證客戶端傳過來的數據,文檔嵌套多時,對性能會有些影響
wireObjectCheck: true
#是否啓用ipv6,默認不啓用
ipv6: true
#unixDomainSocket:
#是否啓用socket監聽 默認true
#enabled: true
#socket保存目錄,默認/tmp
#pathPrefix: log/mongodb
#socket文件權限,默認0700
#filePermissions: 0700
#http:
#是否啓用http服務,默認false,安全考慮線上環境要關閉
#enabled: false
#是否啓用http jsonp,默認false,即使http.enabled爲false,只要此項爲true,一樣可以訪問,安全考慮線上環境要關閉
#JSONPEnabled: false
#是否啓用rest api接口,默認false,安全考慮線上環境要關閉
#RESTInterfaceEnabled: false
compression:
#是否啓用數據壓縮
compressors: snappy
#安全配置
security:
#type:string
#密鑰路徑,副本集和分片集羣節點間授權時使用的密鑰
keyFile: log/mongodb/.replSetTest0Key
#type:string
#集羣授權模式,默認keyFile,值列表:keyFile,sendKeyFile,sendX509,x509
clusterAuthMode: keyFile
#type:string
#是否開啓數據庫訪問RBAC權限控制,默認:disabled,僅對mongod命令有效
authorization: enabled
#type:boolean
#是否開啓服端js執行,默認true,如果未開啓$where,group,mapreduce都不能使用
javascriptEnabled: true
#存儲配置
storage:
#type:string
#數據庫數據存儲目錄,默認/data/db #@
dbPath: data/mongodb/primary
#type:boolean
#啓動時是否嘗試重建索引,默認true
#indexBuildRetry: false
#journal日誌
journal:
#type:boolean
#Enable or disable the durability journal to ensure data files remain valid and recoverable.
enabled: true
#type:int
#日誌同步間隔,Values can range from 1 to 500 milliseconds.
commitIntervalMs: 100
#type:boolean
#是否開啓一數據庫一目錄,默認是false
directoryPerDB: false
#type:int
#數據落地時間間隔,默認爲60秒,不能設置爲0,一般使用默認值即可
syncPeriodSecs: 60
#type:string
##存儲引擎,默認wiredTiger,可選值 mmapv1,wiredTiger,inMemory
engine: wiredTiger
wiredTiger:
engineConfig:
#type:float
#單個實例可用的數據緩存內存大小,version >= 3.4默認:50% of RAM minus 1 GB, or 256 MB.
cacheSizeGB: 0.25
#type:string
#WiredTiger journal數據壓縮格式,默認snappy,可用的壓縮類型: none, snappy, zlib
journalCompressor: snappy
#type:boolean
#索引文件分目錄存儲,默認false,version >= 3.0後版本可用
directoryForIndexes: false
collectionConfig:
#type:string
#塊數據壓縮格式,默認snappy,可用的壓縮類型:none, snappy, zlib
blockCompressor: snappy
indexConfig:
#type:boolean
#是否開啓索引prefix compression,默認true
prefixCompression: true #是否開啓索引prefix compression,默認true
#operationProfiling操作性能分析
operationProfiling:
#type:int
#慢查詢時間單位毫秒,默認100,如果開啓了profile,日誌會保存到system.profile集合中
slowOpThresholdMs: 100
#type:string
#性能分析模式,開啓會影響性能,謹慎操作。默認off.
#可選值1:off: Off. No profiling.
#可選值2: slowOp:On. Only includes slow operations.
#可選值3: all:On. Includes all operations.
mode: slowOp
#replication複製配置
replication:
#type:int
#數字類型(單位M) replication op log 大小,64位系統默認爲可用磁盤的5%
oplogSizeMB: 512
#type:string
#所屬replica set集羣名稱
replSetName: replSetTest0
#setParameter配置
setParameter:
enableLocalhostAuthBypass: false
生成fileKey:
openssl rand -base64 745 > log/mongodb/.replSetTest0Key
- 關閉認證,配置集羣
先把三個config文件中的security節註釋掉,依次啓動三個MongoDB實例,以無認證的方式啓動。
在主機上(我的是27018):
rs.initiate(
{
_id: "replSetTest0",
version: 1,
members: [
{ _id: 0, host : "127.0.0.1:27018" },
{ _id: 1, host : "127.0.0.1:27019" },
{ _id: 2, host : "127.0.0.1:27020" }
]
}
)
在次機上(我的是27019、27020):
rs.slaveOk()
- 新建管理員用戶(不必需,用戶名、密碼記得改改,後面的角色和數據庫保持不變)
db.createUser({user:"admin", pwd:"admin", roles:[{role:"root", db:"admin"}]})
- 開啓認證,部署業務環境
退出剛纔啓動三個實例,取消剛纔的剛纔註釋的security節,重新啓動3個instance
此時,如果不認證的話,應該是無法使用諸如rs.status()
、db.createCollecion()
這樣的方法的,會提示鑑權錯誤。
使用:
use admin
db.auth(“admin”, “admin”)
輸出1則爲認證成功
之後rs.status()試一下:
部署業務環境:
之後就不用多說了,創建一個col,再給他個用戶,db.createUser({ user: "rc", pwd: "rc", roles: [{ role: "dbOwner", db: "rc" }] })
,之後退出cli,用新用戶登錄即可。
暫時先記錄這麼點。後續再追加。
配置文件參考自http://www.cnblogs.com/wadeyu/p/7930608.html