MongoDB-replicaset模式部署,Windows單機版

環境

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章