MongoDB配置複製集

來源:互聯網
上載者:User

標籤:free   name   kill   添加節點   status   move   shutdown   host   exit   

簡介

MongoDB複製是將資料同步在多個伺服器的過程。

複製集提供了資料的冗餘備份,並在多個伺服器上儲存資料副本,提高了資料的可用性, 並可以保證資料的安全性。

複製集還允許從硬體故障和服務中斷中恢複資料。

複製集的優勢
  • 保障資料的安全性
  • 資料高可用性 (24*7)
  • 災難恢複
  • 無需停機維護(如備份,重建索引,壓縮)
  • 分布式讀取資料
MongoDB複製原理
  1. mongodb的複製至少需要兩個節點。其中一個是主節點,負責處理用戶端請求,其餘的都是從節點,負責複製主節點上的資料。

  2. mongodb各個節點常見的搭配方式為:一主一從、一主多從。

  3. 主節點記錄在其上的所有操作oplog,從節點定期輪詢主節點擷取這些操作,然後對自己的資料副本執行這些操作,從而保證從節點的資料與主節點一致。

MongoDB複製結構圖如下所示:

以上結構圖中,用戶端從主節點讀取資料,在用戶端寫入資料到主節點時, 主節點與從節點進行資料互動保障資料的一致性。

複本集特徵:

  • N 個節點的叢集
  • 任何節點可作為主節點
  • 所有寫入操作都在主節點上
  • 自動容錯移轉
  • 自動回復
一、部署MongoDB複製集1. 建立多執行個體設定檔,並開啟服務。(1)建立資料檔案和記錄檔儲存路徑
[[email protected] ~]# mkdir -p /data/mongodb/mongodb{2,3,4}   //建立資料目錄[[email protected]localhost ~]# mkdir -p /data/logs/mongodb [[email protected] ~]# touch /data/logs/mongodb/mongodb{2,3,4}.log  //建立記錄檔[[email protected] ~]# chmod -R 777 /data/logs/mongodb/*.log    //賦予許可權
(2)編輯4個MongoDB執行個體的設定檔

先編輯Mongodb執行個體1的設定檔,配置replication選項,並複製3份。

 vim /etc/mongod.conf      replication:         replSetName: kgcrs  //配置replSetName參數為kgcrs

重新啟動Mongodb執行個體1

[[email protected] ~]# mongod -f /etc/mongod.conf  --shutdown killing process with pid: 1074[[email protected] ~]# mongod -f /etc/mongod.conf about to fork child process, waiting until server is ready for connections.forked process: 17130child process started successfully, parent exiting

複製3份,並修改設定檔中的port參數配置,dbpath參數配置,logpath參數配置。

cp -p /etc/mongod.conf /etc/mongod2.conf cp -p /etc/mongod.conf /etc/mongod3.conf cp -p /etc/mongod.conf /etc/mongod4.conf 

修改mongod2.conf 的設定檔參數。

vim /etc/mongod2.conf    path: /data/logs/mongodb/mongodb2.log   //記錄檔儲存路徑   dbPath: /data/mongodb/mongodb2  //資料檔案路徑   port: 27018     //監聽連接埠

修改mongod3.conf 的設定檔參數。

vim /etc/mongod3.conf    path: /data/logs/mongodb/mongodb3.log   //記錄檔儲存路徑   dbPath: /data/mongodb/mongodb3  //資料檔案路徑   port: 27019     //監聽連接埠

修改mongod4.conf 的設定檔參數。

vim /etc/mongod4.conf    path: /data/logs/mongodb/mongodb4.log   //記錄檔儲存路徑   dbPath: /data/mongodb/mongodb4  //資料檔案路徑   port: 27020     //監聽連接埠
(3)啟動多執行個體服務
mongod -f /etc/mongod2.confmongod -f /etc/mongod3.confmongod -f /etc/mongod4.conf

可以看到四個執行個體全部啟動。

2.配置3個節點的複製集
[[email protected] ~]# mongo   //進入MongoDB27017執行個體MongoDB shell version v3.6.6connecting to: mongodb://127.0.0.1:27017MongoDB server version: 3.6.6    
(1)先通過rs.status()命令查看複製集的狀態資訊,提示複製集還未配置。

(2)定義cfg初始化參數。

初始化配置時保證從節點沒有資料,不然資料會丟失。

> cfg={"_id":"kgcrs","members":[{"_id":0,"host":"192.168.113.176:27017"},{"_id":1,"host":"192.168.113.176:27018"},{"_id":2,"host":"192.168.113.176:27019"}]}

(3)通過rs.initiate(cfg)命令啟動複製集。
> rs.initiate(cfg)

(4)查看複製集狀態。

啟動複製集後,再次通過rs.status()命令查看複製集的完整狀態資訊。
其中,health為1代表健康,0代表宕機。state為1代表主節點,為2代表從節點。

二、增加和刪除節點

配置啟動複製集後,可以通過rs.add()和rs.remove()命令方便的添加或刪除節點。

#添加節點kgcrs:PRIMARY> rs.add("192.168.113.176:27020") kgcrs:PRIMARY> rs.status() //查看節點是否添加成功

#刪除節點kgcrs:PRIMARY> rs.remove("192.168.113.176:27020")kgcrs:PRIMARY> rs.status()

可以看到27020的節點沒有了。

三、MongoDB複製集切換

MongoDB複製集可以實現群集的高可用,當其中的主節點出現故障時會自動切換到其他節點。管理員也可以手動進行複製集的主從切換。

1.類比故障自動轉移

通過kill命令可以停止複製集的當前主節點,然後查看主節點會自動切換到其他節點上。

(1)先查看MongoDB的進程,停止當前的主節點27017
[[email protected] ~]# ps aux | grep mongodroot      17130  1.0  6.2 1582772 62064 ?       Sl   09:33   1:06 mongod -f /etc/mongod.confroot      17830  0.8  5.7 1462576 57628 ?       Sl   09:58   0:45 mongod -f /etc/mongod2.confroot      17880  0.8  5.8 1522504 58324 ?       Sl   09:58   0:45 mongod -f /etc/mongod3.confroot      17927  0.7  5.3 1441856 53356 ?       Sl   09:58   0:37 mongod -f /etc/mongod4.confroot      20678  0.0  0.0 112676   984 pts/1    S+   11:23   0:00 grep --color=auto mongod[[email protected] ~]# kill -9 17130  
(2)查看主節點切換
[[email protected] ~]# mongo -port 27018kgcrs:SECONDARY> rs.status()


2.手動也可以進行主從切換(1)先進入主節點27019,暫停選舉
[[email protected] ~]# mongo -port 27019kgcrs:PRIMARY> rs.freeze(30)      //暫停30s不參與選舉kgcrs:PRIMARY> rs.stepDown(60,30)   //交出主節點位置,維持從節點狀態不少於60秒,等待30秒使主節點和從節點日誌同步
(2)查看主節點切換
kgcrs:SECONDARY> rs.status()

MongoDB配置複製集

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.