天天看點

mongodb3.6 副本集(三)mongodb 如何做資料備災

前言

 個人了解,副本集一個主要作用就是當Master庫出現故障,其中的一個salve從庫會被選舉出來成為新的Master。架構圖如下:

mongodb3.6 副本集(三)mongodb 如何做資料備災

其中,選舉者是不參與資料存儲的,它的作用隻是為了選舉出新的Master。當原Master恢複後,他也隻會以從庫salve身份加入到副本集中。

當然,我們也可以在恢複啟動它的時候手動配置priority參數,讓他成為Master。

Demo

下面通過具體的例子說明。

首先在mongo目錄下建立3個(一個作為master,一個作為從庫,一個作為選舉者,在實際項目中,這三個服務最後放在不同的伺服器上)配置檔案,檔案内容如下:

Master

#配置mongodb資料的存儲路徑

dbpath=D:\mongodb\data\rs1

#配置mongodb日志檔案

logpath=D:\mongodb\log\rs1.log

#配置端口,若不配置,預設27017端口

port=40001

#副本集名字,每個配置檔案中需保持一緻

replSet=rs_test

Salve

#配置mongodb資料的存儲路徑
dbpath=D:\mongodb\data\rs2
#配置mongodb日志檔案
logpath=D:\mongodb\log\rs2.log
#配置端口,若不配置,預設27017端口
port=40002
#副本集名字,每個配置檔案中需保持一緻
replSet=rs_test
      

選舉者配置檔案

#配置mongodb資料的存儲路徑

dbpath=D:\mongodb\data\rs3

#配置mongodb日志檔案

logpath=D:\mongodb\log\rs3.log

#配置端口,若不配置,預設27017端口

port=40003

#副本集名字,每個配置檔案中需保持一緻

replSet=rs_test

 啟動三個mongodb執行個體

首先,在bin 目錄下打開三個shell視窗,分别啟動上面配置的三個mongodb,如下指令:

mongod -f d:\mongodb\rs1.conf  

若是都啟動成功,我們将會在日志檔案中看到主要的資訊:

waiting for connections on port 40003

其次,連接配接配置在40001端口的mongodb執行個體:

mongo -port 40001

初始化40001 為master:

rs.initiate()

初始化成功,使用指令rs.status() 檢視副本集狀态,将會看到如下圖:

mongodb3.6 副本集(三)mongodb 如何做資料備災

從圖中可以看到40001已經作為primary 啟動。

再次,執行指令 rs.add("127.0.0.1:40002")  添加從庫。

mongodb3.6 副本集(三)mongodb 如何做資料備災

添加選舉者:rs.addArb("127.0.0.1:40003") 

再次執行 rs.status() 檢視副本集的狀态,将會看到如下圖:

mongodb3.6 副本集(三)mongodb 如何做資料備災

驗證 選舉

關閉40001 服務端視窗(故障停機),在40002視窗執行 rs.status(),将會看到如下圖:

mongodb3.6 副本集(三)mongodb 如何做資料備災

最後,再次啟用40001 服務端,在bin 下 執行  mongod -f d:\mongodb\rs1.conf

然後 再次檢視狀态 rs.status() ,可以看到40001已經重新加入到副本集并且是作為從庫加入的,如下圖:

mongodb3.6 副本集(三)mongodb 如何做資料備災

 關于mongodb 副本集就介紹到這裡,希望對大家有幫助。文中如有不對的地方,歡迎指出。

謝謝。 

mongodb3.6 副本集(三)mongodb 如何做資料備災