標籤:手動 pos blog 不同的 理解 mongodb 技術分享 ast primary
前言
個人理解,複本集一個主要作用就是當Master庫出現故障,其中的一個salve從庫會被選舉出來成為新的Master。架構圖如下:
其中,選舉者是不參與資料存放區的,它的作用只是為了選舉出新的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() 查看複本集狀態,將會看到如:
可以看到40001已經作為primary 啟動。
再次,執行命令 rs.add("127.0.0.1:40002") 添加從庫。
添加選舉者:rs.addArb("127.0.0.1:40003")
再次執行 rs.status() 查看複本集的狀態,將會看到如:
驗證 選舉
關閉40001 服務端視窗(故障停機),在40002視窗執行 rs.status(),將會看到如:
最後,再次啟用40001 服務端,在bin 下 執行 mongod -f d:\mongodb\rs1.conf
然後 再次查看狀態 rs.status() ,可以看到40001已經重新加入到複本集並且是作為從庫加入的,如:
關於mongodb 複本集就介紹到這裡,希望對大家有協助。文中如有不對的地方,歡迎指出。
謝謝。
mongodb3.6 複本集(三)假期第一天——第二篇文章 mongodb 如何做資料備災