1. 程式人生 > >mongodb-4.0.4搭建叢集

mongodb-4.0.4搭建叢集

前篇已經介紹了MongoDB單機的搭建與使用,如果有小夥伴還不會進行單機的搭建,可以先看前一篇的,本篇主要介紹叢集的搭建與使用!

mongodb的叢集搭建方式主要有三種,主從模式,Replica set模式,sharding模式, 三種模式各有優劣,適用於不同的場合,屬Replica set應用最為廣泛,主從模式現在用的較少,sharding模式最為完備,但配置維護較為複雜。本文我們來看下Replica Set模式的搭建方法。

Mongodb的Replica Set即副本集方式主要有兩個目的,一個是資料冗餘做故障恢復使用,當發生硬體故障或者其它原因造成的宕機時,可以使用副本進行恢復。另一個是做讀寫分離,讀的請求分流到副本上,減輕主(Primary)的讀壓力。

Replica Set是mongod的例項集合,它們有著同樣的資料內容。包含三類角色:
(1)主節點(Primary)
接收所有的寫請求,然後把修改同步到所有Secondary。一個Replica Set只能有一個Primary節點,當Primary掛掉後,其他Secondary或者Arbiter節點會重新選舉出來一個主節點。預設讀請求也是發到Primary節點處理的,需要轉發到Secondary需要客戶端修改一下連線配置。

(2)副本節點(Secondary)
與主節點保持同樣的資料集。當主節點掛掉的時候,參與選主。

(3)仲裁者(Arbiter)
不保有資料,不參與選主,只進行選主投票。使用Arbiter可以減輕資料儲存的硬體需求,Arbiter跑起來幾乎沒什麼大的硬體資源需求,但重要的一點是,在生產環境下它和其他資料節點不要部署在同一臺機器上。
注意,一個自動failover的Replica Set節點數必須為奇數,目的是選主投票的時候要有一個大多數才能進行選主決策。

(4)選主過程
其中Secondary宕機,不受影響,若Primary宕機,會進行重新選主:
在這裡插入圖片描述
下邊我們來使用Arbiter搭建Replica Set

偶數個數據節點,加一個Arbiter構成的Replica Set方式:
在這裡插入圖片描述

叢集配置:

主機 角色
10.0.86.207 主節點
10.0.86.21 從節點
10.0.86.193 仲裁節點

1.下載資源包:
下載MongoDB資源包

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.4.tgz
tar -zxvf mongodb-linux-x86_64-4.0.4.tgz

2.配置檔案:
三臺MongoDB配置檔案都是同樣的寫法,ip和路徑做適當修改即可

vi  /usr/local/sdb/mongodb-linux-x86_64-4.0.4/mongodb.conf
	
port=27017 #埠 
dbpath= /usr/local/sdb/mongodb-linux-x86_64-4.0.4/db #資料庫存檔案存放目錄 
logpath= /usr/local/sdb/mongodb-linux-x86_64-4.0.4/mongodb.log #日誌檔案存放路徑 
logappend=true #使用追加的方式寫日誌 
fork=true #不以守護程式的方式啟用,即不在後臺執行
replSet=sciencedb	#Replica Set的名字 叢集名稱
maxConns=100 #最大同時連線數 
noauth=true #不啟用驗證 
journal=true #每次寫入會記錄一條操作日誌(通過journal可以重新構造出寫入的資料)。 
#即使宕機,啟動時wiredtiger會先將資料恢復到最近一次的checkpoint點,然後重放後續的journal日誌來恢復。 
storageEngine=wiredTiger #儲存引擎有mmapv1、wiretiger、mongorocks 
bind_ip = 10.0.86.193 #這樣就可外部訪問了,例如從win10中去連虛擬機器中的MongoDB

3.啟動MongoDB
啟動三臺MongoDB服務
在bin目錄下,

	./mongod -f /usr/local/sdb/mongodb-linux-x86_64-4.0.4/mongodb.conf

4.在主節點進行配置
還是在bin目錄下依次進行操作,

	./mongo 10.0.86.21
	use admin
	cfg={ _id:"sciencedb", members:[ {_id:0,host:'10.0.86.21:27017',priority:2}, {_id:1,host:'10.0.86.207:27017',priority:1}, {_id:2,host:'10.0.86.193:27017',arbiterOnly:true}] };

備註:
cfg名字可選,只要跟mongodb引數不衝突,_id為Replica Set名字,members裡面的優先順序priority值高的為主節點,對於仲裁點一定要加上arbiterOnly:true,否則主備模式不生效
priority表示優先級別,數值越大,表示是主節點
arbiterOnly:true表示仲裁節點
使叢集cfg配置生效rs.initiate(cfg)
檢視是否生效rs.status()
在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述
接上
在這裡插入圖片描述
圖片長度限制這裡只列出部分說明情況

“stateStr” : “PRIMARY”表示主節點, “stateStr” : “SECONDARY”表示從節點, “stateStr” : “ARBITER”,表示仲裁節點
新增節點命令:
新增secondary:rs.add({host: “192.168.255.141:27019”, priority: 1 })
新增仲裁點:rs.addArb(“192.168.255.142:27019”)
移除節點:rs.remove({host: “192.168.255.141:27019”})

此時已經完成MongoDB叢集的搭建,可以在主節點插入資料檢視從節點是否可以把資料同步過去