mongodb-4.0.4搭建集群
- 2019 年 10 月 4 日
- 筆記
mongodb-4.0.4搭建集群
版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/weixin_42082634/article/details/84973831
前篇已經介紹了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
- 1
- 2
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
3.啟動MongoDB 啟動三台MongoDB服務 在bin目錄下,
./mongod -f /usr/local/sdb/mongodb-linux-x86_64-4.0.4/mongodb.conf
- 1
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}] };
- 1
- 2
- 3
備註: 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集群的搭建,可以在主節點插入數據查看從節點是否可以把數據同步過去