MongoDB實戰-如何在Windows環境下建立副本集
本篇主要講解副本集的建立過程,採用的副本集結構為1個主節點,一個從節點一個仲裁節點。廢話不多說,建立步驟如下:
1. 目錄結構拷貝
首先進入MongoDB的安裝目錄,如C:\Programme Files\MongoDB\Server。將該目錄下的資料夾拷貝出三份複製,分別命名為master,slave和arbiter;
然後拷貝出三份資料和日誌文件的目錄,資料路徑如L:\MongoDb\matserdb,L:\MongoDb\slavedb,L:\MongoDb\arbiterdb;日誌路徑為L:\MongoDb\matserlog,
L:\MongoDb\slavelog,L:\MongoDb\arbiterlog.
前期工作準備完畢,下面正式開始啟動對應的主從mongod例項
2. mongod例項的啟動
主節點Mongod例項啟動,埠號27111
從節點Mongod例項啟動,埠號27112
仲裁節點Mongod例項啟動,埠號27113
啟動成功與否,請查詢每個例項對應的日誌檔案顯示。顯示連線到對應埠表示啟動成功。三個節點的歸屬副本集名字為mySet,所有mongod例項的日誌記錄方式為增加。
使用到的mongod的啟動引數設定如下表:
引數 | 引數含義 |
---|---|
port | Mongodb的監聽埠 |
dbpath | 資料檔案儲存路徑 |
logpath | 系統日誌存放路徑 |
replSet | 副本集名稱,我用的是mySet,其他的節點 必須使用這個名字做副本集名稱 |
logappend | 日誌的寫入模式是追加,不是預設的覆蓋模式 |
3. 將三個Mongod例項連線在一起
成功啟動了三個Mongod的例項後,下面的工作就是如何將這三個例項組成一個副本集。新開啟一個cmd視窗,執行mongd 命令,跟上其中一個埠號27111,mongo資料庫啟動成功後,設定對應的副本集配置,配置程式碼如下:
congfig_set={"_id":"mySet",members:[{_id:0,host:"127.0.0.1:27111"},{_id:1,host:"127.0.0.1:27112"},{_id:2,host:"127.0.0.1:27113"}]}
然後通過下面的指令啟動樣本集
rs.initiate(config_set)
執行結果如下:
顯示OK,表示副本集建立成功
4.查詢副本集狀態
使用rs.status指令查詢副本集中各例項的狀態,執行結果如下:
可以看到副本集中的各成員狀態:
health:1 //1表明狀態是正常,0表明異常
state:1 // 1表明是primary,2表明是slave,即做備份的機器
5. 停止其中一個節點無論主節點還是從節點假設我們停止了其中第一個從節點,即埠號為27112的節點後,再次檢視副本集狀態
發現第二個節點的health為0,表示節點停止了。同樣,若我們暫停的是第一個主節點,其中一個從節點會自動切換為主節點。
6. 將第兩個個從節點設定為仲裁節點
也就是將127.0.0.1:27112,127.0.0.1:27113設定為仲裁節點,首先刪除原始的第二個從節點:
rs.remove("127.0.0.1:27112")
rs.remove("127.0.0.1:27113")然後重新設定副本集的設定引數:
config_set={"_id":"mySet",members:[{_id:0,host:"127.0.0.1:27111"},{_id:2,host:"127.0.0.1:27112"},{_id:3,host:"127.0.0.1:27113",aibiterOnly:true}]}
然後執行
rs.reconfig(config_set)
這時,才是將第二個從節點設定為了仲裁節點,再次執行rs.status()結果如下:
看出從節點2的stateStr為ARBITER。至此,一主一叢一仲裁節點的副本集才建立完畢。