MongoDB搭建副本集(一)

       最近筆者在學習MongoDB複製,收集整理了一些資料,並做了簡單的副本集搭建測試。       


        首先,我們來了解一下什麼是複製。複製就是在多個服務器上同步數據的過程,複製提供了冗餘,提高了數據的可用性。隨着


不同的數據庫服務器數據的多個副本,複製提供了針對單個數據庫服務器的丟失的容錯水平。在一些情況下,複製可以提供增加的


出量,客戶端可以發送讀操作到不同的服務器。在不同的數據中心維護數據的副本可以分佈式應用程序提高數據局部性和可用


性。復制還可以爲了專用的目的維護額外的副本,如故障恢復,報告,或備份。


MongoDB中的複製


         副本集是一組維護相同的數據集的mongod實例。副本集包含幾個數據承載節點和可選的一個仲裁者節點。數據承載節點中有


且只有一個節點被視爲主服務器(primary),而其他節點被視爲副本服務器(secondary)

        

主服務器是副本集接受所有的寫操作的唯一成員。MongoDB在主服務器上應用寫操作,在主服務器的oplog中記錄操作。下面是


三成員的副本集,主服務器接受所有的寫操作,副本服務器成員複製這個日誌並應用這些操作到它們的數據集上。


副本集的所有成員都可以接受讀操作。然而,在默認情況下,應用程序指定讀操作給主服務器。

       

 副本集最多隻能有一個主服務器副本服務器複製主服務器的oplog應用這些操作到數據集,這使得副本服務器的數據集反


了主服務器的數據集。



        我們還可以增加額外的mongod實例作爲副本集的仲裁者。仲裁器不維護的數據集。它的目的是通過響應心跳和其他副本集成員


選舉的要求來維護副本集的法定人數。



自動故障轉移


        當主服務器超過10秒沒有和副本集的其他成員通信或者是變得不可用,一個合格的副本服務器將會被選舉來作爲新的主服務


器。選舉中第一個副本服務器且獲得多數成員投票的成爲主服務器。在MongoDB3.2中,引入了複製協議1來減少副本集故障轉移的時


間,加快了多個同步初選的檢測。


        下面是三成員的副本集,它的主服務器變得不可用。這會觸發它選擇一個剩餘的副本服務器作爲新的主服務器。



讀操作


        默認情況下,客戶端從主服務器讀取數據;但是,客戶端可以指定一個讀優先權發送讀取操作到副本服務器。異步複製到副本服


務器意味着從副本服務器讀取可能會返回一個不反映主服務器的數據狀態。


       上面介紹了MongoDB複製和副本集的一些簡單概念,在接下來的文章中會介紹如何在單機下搭建副本集。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章