標籤:日誌 資料同步 blog nbsp image 資料庫 cond 有一個 一個
MongoDB複製集是一個帶有容錯移轉的主從叢集。是從現有的主從模式演變而來,增加了自動容錯移轉和節點成員自動回復。
MongoDB複製集模式中沒有固定的主結點,在啟動後,多個服務節點間將自動選舉產生一個主結點。該主結點被稱為primary,一個或多個從結點被稱為secondaries。
primary結點基本上就是master結點,不同之處在於primary結點在不同時間可能是不同的伺服器。如果當前的主結點失效了,複製集中的其餘結點將會試圖選出一個
新的主結點。
MongoDB複製集模式的好處:
- 一切自動化。首先,複製集模式本身做了大量的管理工作,自動管理從節點,確保資料不會不一致。
- 主節點掛掉後,會自動判斷叢集中的伺服器並進行容錯移轉,推舉新的主節點。
- 一個複製集叢集支援1-7台伺服器,在一個複製集中各個伺服器資料保持完全一致。
在一個MongoDB複製集叢集中,各個伺服器有以下幾種狀態:
- Primary 主節點,一個複製集有且僅有一台伺服器處於Primary狀態,只有主節點才對外提供讀寫服務。如果主節點掛掉,複製集將投票選出一個備節點成為新的主節點。
- Secondary 備用節點,複製集允許有多台Secondary,每個備用節點的資料與主節點的資料是完全同步的。Recovering 恢複中,當複製集中某台伺服器掛掉或者掉線後資料無法同步,重新恢複服務後從其他成員複製資料,這時就處於恢複過程,資料同步後,該節點又回到備用狀態。
- Arbiter 仲裁節點,該類節點可以不用單獨存在,如果配置為仲裁節點,就主要負責在複本集中監控其他節點狀態,投票選出主節點。該節點將不會用於存放資料。如果沒有仲裁節點,那麼投票工作將由所有節點共同進行。
- Down 無效節點,當伺服器掛掉或掉線時就會處於該狀態。複製集的從節點讀請求,也是在各個Driver層設定slaveOk的值來實現的。
如上介紹所知,mongodb中的複製可以在多台伺服器中同步資料。複製提供了冗餘和增加了資料的高可用性,防止單個節點易遺失資料的可能性,也可以用來進行讀寫分離提高用戶端操作效能。複製集中各節點的mongodb執行個體有相同的資料集副本。主節點可以接收用戶端所有寫操作記錄到日誌中,從庫複製主庫的動作記錄記錄應用到其資料庫中。一個用戶端只能有一個主節點,如果主節點不可用(10秒內無法串連),複製集中將選一個成員節點作為主節點。
mongodb主備+仲裁的基本結構如下:
下面簡單介紹下MongoDB 複本集的部署過程:
MongoDB副本(一主一備+仲裁)環境部署記錄