2018年12月12日 15:32:12 張益達· 閱讀數 365更多linux
分類專欄: centos7環境搭建mongodb
版權聲明:本文爲博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接和本聲明。數據庫
本文連接:https://blog.csdn.net/weixin_42082634/article/details/84973831centos
前篇已經介紹了MongoDB單機的搭建與使用,若是有小夥伴還不會進行單機的搭建,能夠先看前一篇的,本篇主要介紹集羣的搭建與使用!app
mongodb的集羣搭建方式主要有三種,主從模式,Replica set模式,sharding模式, 三種模式各有優劣,適用於不一樣的場合,屬Replica set應用最爲普遍,主從模式如今用的較少,sharding模式最爲完備,但配置維護較爲複雜。本文咱們來看下Replica Set模式的搭建方法。centos7
Mongodb的Replica Set即副本集方式主要有兩個目的,一個是數據冗餘作故障恢復使用,當發生硬件故障或者其它緣由形成的宕機時,可使用副本進行恢復。另外一個是作讀寫分離,讀的請求分流到副本上,減輕主(Primary)的讀壓力。spa
Replica Set是mongod的實例集合,它們有着一樣的數據內容。包含三類角色:
(1)主節點(Primary)
接收全部的寫請求,而後把修改同步到全部Secondary。一個Replica Set只能有一個Primary節點,當Primary掛掉後,其餘Secondary或者Arbiter節點會從新選舉出來一個主節點。默認讀請求也是發到Primary節點處理的,須要轉發到Secondary須要客戶端修改一下鏈接配置。.net
(2)副本節點(Secondary)
與主節點保持一樣的數據集。當主節點掛掉的時候,參與選主。3d
(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 #存儲引擎有mmapv一、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集羣的搭建,能夠在主節點插入數據查看從節點是否能夠把數據同步過去