初識MongoDB(七)
搭建集群
集群搭建網上查了有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(七)