1. 程式人生 > >初識MongoDB(七)

初識MongoDB(七)

創建 服務安裝 cfg stat pause 缺少 大小 一個數據庫 pid

  搭建集群

集群搭建網上查了有3中方案:Replica Set / Sharding / Master-Slaver

第三種基本上目前很少人使用 就不介紹了。主要介紹Replica Set 和Sharding

Replica Set

  該部署中文翻譯為副本集,就是一個主節點,N個副節點,一個仲裁節點,當主節點掛掉後,仲裁節點仲裁哪個副節點提升為主節點。

繼續運行,不至於因為主節點的掛掉而影響整個數據庫的使用。當原主節點恢復後,作為副節點繼續運行,仲裁節點不存儲數據,也不和應用程序相連,只是作為仲裁使用。仲裁節點不能缺少,缺少後,副節點無法提升為主節點。導致系統無法正常運行。

本地模擬,只創建了一個主節點(mongodb1),一個副節點(mongodb2),一個仲裁節點(mongodb3)。

技術分享圖片

在每個文件夾下創建data數據文件夾和log日誌文件夾,

在mongodb1\data文件夾下創建master 存放 master.config 文件

在mongodb2\data文件夾下創建slaver 存放 slaver.config 文件

在mongodb3\data文件夾下創建arbiter 存放 arbiter.config 文件

技術分享圖片

master.config配置文件

#master.config
dbpath=D:/test/mongodb1/data/master      #數據存放目錄
logpath=D:/test/mongodb1/log/master.log   #日誌存放目錄
pidfilepath=D:/test/mongodb1/master.pid   #進程文件,方便停止mongodb
directoryperdb=true               #為每一個數據庫按照數據庫名建立文件夾存放
logappend=true                  #以追加的方式記錄日誌
replSet=testrs                  #副本集名稱
port=27017                    #端口
oplogSize=10000                 #mongodb操作日誌文件的最大大小。單位為Mb,默認為硬盤剩余空間的5%
bind_ip:mongodb                 #所綁定的ip地址 不同計算機上部署 可以用到 本地部署多個 以端口分開 需要去掉否則報錯
fork=true                     #以後臺方式運行進程 這個的在linux下是沒問題的,在windows下回報錯

slaver.config 和aribiter.config 和這個目錄和端口不一致 其他都一樣,不在一一列舉

在test文件夾下創建啟動批處理文件

主服務安裝.bat

@echo off
d:
cd mongodb1\bin
mongod -config d:\test\mongodb1\data\master\master.config --install --serviceName "MongoDBMaster" --serviceDisplayName "MongoDBMaster" --journal start= "auto"
pause

從服務安裝.bat

@echo off
d:
cd mongodb2\bin
mongod -config d:\test\mongodb2\data\slaver\slaver.config --install --serviceName "MongoDBSlaver" --serviceDisplayName "MongoDBSlaver"  --journal start="auto"
pause

仲裁服務安裝.bat

@echo off
d:
cd mongodb3\bin
mongod -config d:\test\mongodb3\data\arbiter\arbiter.config --install --serviceName "MongoDBArbiter" -serviceDisplayName "MongoDBArbiter"   --journal start="auto"
pause

配置文件

mongo 127.0.0.1:27017
use admin
#cfg={_id:"testrs",members:[{_id:0,host:‘127.0.0.1:27017‘,priority:2},{_id:1,host:‘127.0.0.1:27018‘,priority:1},{_id:2,host:‘127.0.0.1:27019‘,arbiterOnly:true}]};
rs.initiate(cfg)
rs.add("127.0.0.1:27018");
rs.addArb("1270.0.01:27019");
rs.status()  

cfg是可以任意的名字,當然最好不要是mongodb的關鍵字,conf,config都可以。最外層的_id表示replica set的名字,members裏包含的是所有節點的地址以及優先級。優先級最高的即成為主節點,即這裏的127.0.0.1:27017。特別註意的是,對於仲裁節點,需要有個特別的配置——arbiterOnly:true。這個千萬不能少了,不然主備模式就不能生效。

配置完畢,可以通過 rs.status() 查看。

技術分享圖片

技術分享圖片

技術分享圖片

能看出來那個IP 是配置的 Primary( 主節點)、副節點(SECONDARY)和仲裁節點(ARBITER)

在主節點插入數據,從副節點能夠查詢到,如果停止主節點,仲裁節點就會提升副節點為主節點。如果遠主節點恢復,恢復後變為副節點。

數據也會自動變更為主節點一樣的數據。節點查詢 都可以通過 rs.status() 查看。

技術分享圖片

初識MongoDB(七)