複製集的概念
複製集(也叫複本集 Replica Set)就是有自動故障恢複功能的主從叢集。
傳統的主從結構和複製集最為明顯的區別是複製集沒有固定的“主節點”:整個節點會選舉出一個“主節點”,當其不能工作時則變更到其它節點。複製集總會有一個活躍節點(primary)和一個或多個備份的節點(secondary)
對於MongoDB在資料容災上,推薦的模式是使用複本集模式,但傳統主從結構與複製集相較也有的一些“用武之處”:
“複製集中參與選舉的資料節點只能有7個”(MongoDB 2.6版本)
雖然可以修改複製節點屬性的方法,能將複製集節點增加到12個,但剩餘5個節點都不能提供服務,只能做為資料冗餘。所以某個生產環境需要從節點的數量超過11個時,我們就可使用傳統的主從結構,因為主從結構的從節點數量不受限制。
當複製集支援可提供服務的資料節點數超過11個時,那麼官方建議立即“啟用”主從結構。但在MongoDB3.0版本以上支援的副本數已經超過50個。
複製集的特點
複製集的特點主要有以下四點:
主是唯一的,但不是固定的。
由大多資料原則保證資料的一致性
從庫無法寫入(預設情況下,不使用驅動串連時,也是不能查詢的)
相對於傳統的主從結構,複製集可以自動容災。
複製整合員分類
任何時間活躍節點(也即主節點)只有一個,其它都為備份節點,指定的活躍節點可隨時間而變化。有幾種不同類型的節點存在於複本集中:
Standard(標準)
這種是常規節點,它儲存一份完整的資料副本,參與投票選舉,有可能成為活躍節點
Passive(被動)
儲存完整的資料副本,參與投票,不能成為活躍節點。
Arbiter(投票)
仲裁節點只參與投票,不接收複製的資料,也不能成為活躍節點。
每個參與節點(非仲裁者)有個優先權,優先權(priority)為0則是被動的,不能成為活躍節點,優先權不為0的,按照由大到小選出活躍節點,優先值一樣的則看誰的資料比較新。
按是否存放資料區分:
資料節點:存放資料(實體物理檔案*.ns *.0等)的節點,包括主節點和從節點
投票節點:不存入資料,僅做選舉和複製集節點
按功能區分:
主節點:提供讀寫服務的活躍節點
從節點:提供讀服務的節點
延時節點:延時複製節點(priority=0hidden=true slaveDelay=xx)
隱藏節點:對應用程式不可見(priority=0 hidden=true)
“投票”節點:具有投票權的節點,不是arbiter(priority=0)的節點
投票節點:Arbiter節點,無資料,僅做選舉和充當複製集節點,也稱為選舉節點。